JavaConfig配置文件为Spring创建bean
来源:互联网 发布:淘宝投诉电话怎么打 编辑:程序博客网 时间:2024/06/08 04:11
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 CDPlayer anothercdplayer(CompactDisc compactDisc){
return new CDPlayer(compactDisc);
}
}
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 CDPlayer anothercdplayer(CompactDisc compactDisc){
return new CDPlayer(compactDisc);
}
}
以上的配置文件向Spring容器声明了两个类,通过构造器注入了compactDisc。
package soudSystem;
public calss CompactDisc {
void play(){
System.out.println("----play------");
}
}
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);
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);
}
}
}
@Test
public void testAnothercdplayer() {
assertNotNull(compactDisc);
Boolean flag=compactDisc.equals(compactDisc);
System.out.println(flag);
}
}
运行结果:
----play------ //由运行结果可看出不为null,说明已经创建bean成功了,调用 其方法也没有错
true //由此可看出两个compactDisc是相同的,表明Spring对一同一个类只创建一个,Spring 中的Bean都是单单例的。
true
true //由此可看出两个compactDisc是相同的,表明Spring对一同一个类只创建一个,Spring 中的Bean都是单单例的。
true
阅读全文
0 0
- JavaConfig配置文件为Spring创建bean
- Spring journey -- JavaConfig 装配 Bean
- spring实战-JavaConfig装配bean
- Spring Bean之JavaConfig自动化装配bean
- spring通过配置文件创建bean
- Spring学习笔记(四) JavaConfig创建Bean与AOP编程相结合的Demo
- 【Spring学习28】JavaConfig配置bean
- 第一个Spring JavaConfig注解配置bean
- spring-javaconfig
- Spring JavaConfig - NoSuchBeanDefinitionException: No unique bean of type
- spring笔记:第二章(通过javaconfig类装配bean)
- 【Spring 核心】装配bean(二) JavaConfig装配
- spring-配置bean(2、基于JavaConfig的配置)
- 装配Bean:JavaConfig@Bean@Configuration
- Spring配置文件解析-Bean
- spring bean配置文件详解
- Spring配置文件 装配Bean
- spring-bean.xml配置文件
- F1V3.0-21 微服务旧版本升级
- Virtualbox 启用USB 设备支持
- HDU --- 5015 233 Matrix 【思维 + 矩阵快速幂】
- 如何做618数据复盘?你需要掌握这8大思路
- DM368开发 --IPNC 设置过程
- JavaConfig配置文件为Spring创建bean
- 窗体部件效果之窗体置顶
- LayoutInflater的使用
- 使用AS开发/调试整个android系统源代码
- 程序员该如何定位?看这四个方向
- zoj 1021
- 不再迷惑,无值和 NULL 值
- 日期插件WdatePicker.js
- LSMW批处理使用方法(05)_步骤3下