Spring4-通过bean.属性或bean.方法调用

简介:



本文转自 素颜猪 51CTO博客,原文链接:

http://blog.51cto.com/suyanzhu/1910258


1.创建Maven项目,项目名称springdemo45,如图所示

wKioL1jVzzmBfzhmAAA-pppB4BA938.png-wh_50


2.配置Maven,修改项目中的pom.xml文件,修改内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>1.0.0</modelVersion>
  <groupId>shequ</groupId>
  <artifactId>springdemo13</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<java.version>1.7</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>
  
  <repositories>
  	<repository>
  		<id>codelds</id>
  		<url>https://code.lds.org/nexus/content/groups/main-repo</url>
  	</repository>
  </repositories>
  
  <dependencies>
  	<dependency>
  		<groupId>javax.annotation</groupId>
  		<artifactId>jsr250-api</artifactId>
  		<version>1.0</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.10</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.1.4.RELEASE</version>
  	</dependency>
  	
  	<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.1.4.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.34</version>
    </dependency>
       
  </dependencies>
  <build/>
</project>


3.在src/main/java下创建实体Bean Forum,包名(com.mycompany.shequ.bean)如图所示

wKiom1jVz4OTeQw5AABK5Bq7oSQ533.png-wh_50


4.实体Bean Forum的内容如下

package com.mycompany.shequ.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("forumBean")
public class Forum {
	private int fid;
	private String name;
	private int displayOrder;
	public int getDisplayOrder() {
		return displayOrder;
	}
	@Value("1")
	public void setDisplayOrder(int displayOrder) {
		this.displayOrder = displayOrder;
	}
	public int getFid() {
		return fid;
	}
	@Value("1")
	public void setFid(int fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	@Value("Spring EL以注解形式")
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "{fid=>"+this.fid+",name=>"+this.name+",displayOrder=>"+this.displayOrder+"}";
	}
	
	public String getAddress(String address){
		return address;
	}
}


5.在src/main/java下创建实体Bean ForumPost,包名(com.mycompany.shequ.bean)如图所示

wKiom1jVz9GxdkgzAABLqSjHfq8367.png-wh_50


6.实体Bean ForumPost的内容如下

package com.mycompany.shequ.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("forumPostBean")
public class ForumPost {
	private int pid;
	private String name;
	private Forum forum;
	private String address;
	public String getAddress() {
		return address;
	}
	@Value("#{forumBean.getAddress('jiangsu')}")//通过.调用forumBean中的getAddress方法
	public void setAddress(String address) {
		this.address = address;
	}
	public int getPid() {
		return pid;
	}
	@Value("1")
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getName() {
		return name;
	}
	@Value("#{forumBean.name}")//通过.调用forumBean中的name属性
	public void setName(String name) {
		this.name = name;
	}
	public Forum getForum() {
		return forum;
	}
	@Value("#{forumBean}")
	public void setForum(Forum forum) {
		this.forum = forum;
	}
}


7.在src/main/resource下创建核心的配置文件applicationContext.xml,如图所示

wKiom1jV0BPAYv5bAABCpwnap7w282.png-wh_50


8.核心的配置文件applicationContext.xml的内容如下

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/util
	http://www.springframework.org/schema/util/spring-util-4.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	
	<context:component-scan base-package="com.mycompany.shequ.bean"/>

</beans>



9.在src/test/java下创建测试文件AppTest,包名(com.mycompany.shequ.test)如图所示

wKioL1jV0EPwBzoFAABKdgjw_uQ620.png-wh_50


10.测试文件AppTest的内容如下

package com.mycompany.shequ.test;

import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.mycompany.shequ.bean.ForumPost;


public class AppTest {
	
	@Test
	public void beanTest(){
	    ConfigurableApplicationContext context = new 
	    ClassPathXmlApplicationContext("applicationContext.xml");
		ForumPost forumPost = (ForumPost) context.getBean("forumPostBean");
		System.out.println(forumPost.getName());
		System.out.println(forumPost.getAddress());
		System.out.println(forumPost.getForum());
	}
}	


11.在测试类AppTest的beanTest方法上右键运行,输出结果如图所示

wKiom1jV0ITRJMn9AAEV-lA3dw0058.png-wh_50

wKioL1jV0I6Ss_SzAABwCKMO5XE032.png-wh_50

相关文章
|
9天前
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
15 2
|
9天前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
21 3
|
2天前
|
Java Spring 容器
解读spring5源码中实例化单例bean的调用链
解读spring5源码中实例化单例bean的调用链
|
4天前
|
运维 Java 测试技术
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
Spring运维之boo项目表现层测试加载测试的专用配置属性以及在JUnit中启动web服务器发送虚拟请求
11 3
|
4天前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
13 2
|
4天前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
11 1
|
9天前
|
Java 开发者 Spring
Spring 中 Bean 的生命周期
Spring 中 Bean 的生命周期
12 2
|
16天前
|
Java Spring
解决 Spring 中 Prototype Bean 注入后被固定的问题
【6月更文挑战第8天】学习 Spring 框架内不原理的意义就是,当遇到问题时,分析出原因,就可以从多个切入点,利用 Spring 的特性,来解决问题。
29 2
|
1天前
|
Java Spring
Spring注解内容----用来替代Bean
Spring注解内容----用来替代Bean
|
1天前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入