JavaConfig配置文件为Spring创建bean
2017-06-22 15:05
495 查看
Spring容器创建Bean的三种方法:JavaConfig,XML配置,自动装配
JavaConfig是独立于Spring的一个项目,在Spring3.0后出现。大部分企业中还是最常见的为自动装配及XML配置,其实JavaConfig也可被视为一个XML文件,只是由Java代码编写。XML配置文件只有在运行的时候的才检查Bean是否配置正确,比如如果没有相应的注解,无法注入到Spring容器,在启动时会报错,但是JavaConfig则会在编译的时候直接提示,利于提前发现错误。
JavaConfig是一个配置类,用@Configuration注解来向Spring容器声明该类为一个配置类,通常单独放在一个包内。JavaConfig中实际就是为Spring配置Bean,通过@Bean来向Spring注入一个Bean并且返回一个类的实例化,容器中的类名就是Bean类的首个字母小写。可以想象,JavaConfig可以配置所有Spring需要的Bean,和XML文件配置及自动装配是一样的,JavaConfig注入Bean和其他两种方法向Spring容器中注入Bean是一样的,有DI依赖注入,依赖注入也相同,构造器注入,Setter方法依赖注入。下面的例子是简单的JavaConfig配置。
该例子的意思为一个CDPlayer需要依赖一个CompactDisc也就是光盘才可以工作,依赖这个光盘。package JavaZhuangpeiBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import soudSystem.CDPlayer;
import soudSystem.CompactDisc;
import soudSystem.SgtPeppers;
@Configuration
public class CDPlayerConfig2 {
@Bean
public CDPlayer cdplayer(CompactDisc compactDisc){
return new CDPlayer(compactDisc); //对这两个实例都通过构造器进行依赖注入一个compactDisc,查看一下Spring
容器中对于同一个类的对象是否会创建多个
}
@Bean
public CDPlay
bdaf
er anothercdplayer(CompactDisc compactDisc){
return new CDPlayer(compactDisc);
}
}
以上的配置文件向Spring容器声明了两个类,通过构造器注入了compactDisc。
package soudSystem;
public calss CompactDisc {
void play(){
System.out.println("----play------");
}
}
以上创建一个类,有一个方法play。由此可以做个推断 1:如果play方法运行了,那么CompactDisc的对象肯定是创建了,否则无法运行其方法。2:CompactDisc要创建,必须CDPlayer的Bean要在容器中注册并创建,因为CDPlayer要依赖CompactDisc,CompactDisc已经创建了,CDPlayer必然创建了。那么到底是不是呢,我们用Junit来测试一下这两个Bean(CDPlayer,CompactDisc)是否为空,如果不为空,则表示已经通过JavaConfig在Spring容器中创建好了。
package JavaZhuangpeiBean;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import soudSystem.CDPlayer;
import soudSystem.CDPlayerConfig;
import soudSystem.CompactDisc;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig2.class)
public class CDPlayerConfig2Test {
@Autowired
private CompactDisc compactDisc;
@Autowired
private CDPlayer cdplayer;
@Test
public void testCdplayer() {
assertNotNull(compactDisc);
compactDisc.play();
Boolean flag=compactDisc.equals(compactDisc);
System.out.println(flag);
}
@Test
public void testAnothercdplayer() {
assertNotNull(compactDisc);
Boolean flag=compactDisc.equals(compactDisc);
System.out.println(flag);
}
}
运行结果:
----play------ //由运行结果可看出不为null,说明已经创建bean成功了,调用
其方法也没有错
true //由此可看出两个compactDisc是相同的,表明Spring对一同一个类只创建一个,Spring 中的Bean都是单单例的。
true
相关文章推荐
- JAVA读取Spring配置的bean文件
- SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-008-在XML配置文件中引入JAVA配置文件 <import> 、<bean>
- 第一个Spring JavaConfig注解配置bean
- 用javaConfig注解创建spring 工程的基本配置
- [java][spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得Appli
- java中利用spring动态的创建hibernate的配置文件
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- 创建配置类Config代替Spring的xml配置文件
- Java 学习笔记04:Spring XML配置文件Bean
- Spring配置文件的三种方法(创建测试类Test.java)
- Spring学习笔记(四) JavaConfig创建Bean与AOP编程相结合的Demo
- Spring 源码 之 配置文件中的Bean在Spring中的创建过程
- 如何告诉spring初始化指定配置文件中的javabean
- spring通过配置文件创建bean
- 译--Spring中 bean定义profiles的使用 javaConfig 和XML配置
- java 获取spring配置文件中bean 对象
- spring在配置文件中bean对象创建的三种方式
- 在普通Java类里使用spring配置文件里的bean类如dao,service
- 【Spring学习28】JavaConfig配置bean
- [java][spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法