笔记3 装配Bean总结
一、自动化装配bean
1.组件扫描
2.自动装配
CompactDisc.java
package Autowiring;
public interface CompactDisc {
void play();
}
SgtPeppers.java
SgtPeppers类上使用了@Component注解。
这个简单的注解表明该类会作为组件类,并告知Spring要为这个类创建bean。没有必要显式配置SgtPeppersbean,因为这个类使用了@Component注解,所以Spring会为你把事情处理妥当。
package Autowiring; import org.springframework.stereotype.Component; @Component
public class SgtPeppers implements CompactDisc {
private String title = "Sgt. Pepper's Lonely Hearts Club Band";
private String artist = "The Beatles"; @Override
public void play() {
// TODO Auto-generated method stub
System.out.println("Playing " + title + " by " + artist);
} }
不过,组件扫描默认是不启用的。我们还需要显式配置一下Spring,从而命令它去寻找带有@Component注解的类,并为其创建bean。
package Autowiring; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration
@ComponentScan
public class CDPlayerConfig { }
通过Java代码定义了Spring的装配规则@ComponentScan默认会扫描与配置类相同的包。
因为CDPlayerConfig类位于Autowiring包中,因此Spring将会扫描这个包以及这个包下的所有子包,查找带有@Component注解的类。
这样的话,就能发现CompactDisc的实现类,并且会在Spring中自动为其创建一个bean。
测试
CDPlayerTest.java
package Autowiring; 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; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Autowiring.CDPlayerConfig.class)
public class CDPlayerTest {
@Autowired
private CompactDisc cd; @Test
public void test() {
cd.play();
}
}
CDPlayerTest使用了Spring的SpringJUnit4ClassRunner,以便在测试开始的时候自动创建Spring的应用上下文。
注解@ContextConfiguration会告诉它需要在CDPlayerConfig中加载配置。因为CDPlayerConfig类中包含了@ComponentScan,因此最终的应用上下文中应该包含CompactDisc这个bean。在测试代码中有一个CompactDisc类型的属性,并且这个属性带有@Autowired注解,以便于将CompactDisc这个bean注入到测试代码之中
二、通过Java代码装配Bean
CDPlayerConfig.java
package Javawiring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class CDPlayerConfig { @Bean
public CompactDisc randomBeatlesCD() {
int choice = (int) Math.floor(Math.random() * );
if (choice == ) {
return new SgtPeppers();
} else if (choice == ) {
return new WhiteAlbum();
} else if (choice == ) {
return new HardDaysNight();
} else {
return new Revolver();
}
} @Bean
public CDPlayer cdPlayer(CompactDisc randomBeatlesCD) {
return new CDPlayer(randomBeatlesCD);
}
}
@Configuration注解表明这个类是一个配置类 , 移除了@ComponentScan注解,此时的CDPlayerConfig类就没有任何作用了。
声明简单的bean
@Bean
public CDPlayer cdPlayer(CompactDisc randomBeatlesCD) {
return new CDPlayer(randomBeatlesCD);
}
CDPlayer实现了一个接口,构造函数的参数是实现了CompactDisc接口的类,然后执行其相应的方法。
@Bean
public CompactDisc randomBeatlesCD() {
int choice = (int) Math.floor(Math.random() * );
if (choice == ) {
return new SgtPeppers();
} else if (choice == ) {
return new WhiteAlbum();
} else if (choice == ) {
return new HardDaysNight();
} else {
return new Revolver();
}
}
三、通过XML装配bean
声明一个bean
<bean id="sgtPepperss" class="XMLwiring.SgtPepperss" ></bean>
测试的时候修改@ContextConfiguration("classpath:SoundSystemXMLwiring.xml"),然后定义相应的对象进行测试。
四、混合装配
两个Java配置文件,在一个总的配置文件中使用@Import({ CDConfig.class, CDPlayerConfig.class })进行结合。
1.在JavaConfig中引用XML配置 <@ImportResource注解>
@ImportResource("classpath:SoundSystemJavaXMLwiring.xml")
2.在XML配置中引用JavaConfig
将Java配置文件当作bean在XML文件中进行声明即可。
笔记3 装配Bean总结的更多相关文章
- 《Spring In Action》阅读笔记之装配bean
Spring主要装配机制 1.在XML中进行显式配置 2.在Java中进行显式配置 3.隐式的的bean发现机制和自动装配 自动化装配bean Spring从两个角度来实现自动化装配 1.组件扫描:S ...
- Spring学习笔记--自动装配Bean属性
Spring提供了四种类型的自动装配策略: byName – 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType – 把与Bean的属性具有相同类型 ...
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- #Spring实战第二章学习笔记————装配Bean
Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- SpringInAction读书笔记--第2章装配Bean
实现一个业务需要多个组件相互协作,创建组件之间关联关系的传统方法通常会导致结构复杂的代码,这些代码很难被复用和单元测试.在Spring中,对象不需要自己寻找或创建与其所关联的其它对象,Spring容器 ...
- Spring学习笔记(二)之装配Bean
一,介绍Bean的装配机制 在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本 ...
- Spring学习笔记(三)之装配Bean
除了组件扫描与自动装配之外还有基于Java代码的装配与基于XML的装配. 有一些场景是我们不能用自动装配的,比如我们要给第三方库中的组件装配到我们的应用中,这时自动装配无效,因为自动装配只能扫描本应用 ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(11):XML和Annotation装配Bean的混合使用(@ImportResource)
一.XML和Annotation装配Bean如何合理使用 引入第三方资源包中类的时候,建议使用XML配置,而使用自己编写的Java类的时候,推荐使用Annotation注解配置Bean. 二.关于注解 ...
随机推荐
- HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享
[数据恢复故障描述] 客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...
- Java.nio-随机读写汉字
笔者最近在用多线程来计算中文文本的标点符号数目,遇到了以下问题: 在Windows下,文本中汉字通常采用Unicode编码,这就导致需要随机(RandomAccessFile)读取文本时,产生乱码现象 ...
- JavaScript Cookie使用实例
# Session-Cookie // 利用Cookie防止在1分钟内多次提交: function SetCookie (name, value) { var Days = 30; var exp ...
- [翻译]现代java开发指南 第三部分
现代java开发指南 第三部分 第三部分:Web开发 第一部分,第二部分,第三部分 =========================== 欢迎来到现代 Java 开发指南第三部分.在第一部分中,我们 ...
- Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题
webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...
- 深度爬取之rules
深度爬取之rules CrawlSpider使用rules来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎.所以在正常情况下,CrawlSpider不需要单独手动返回请求了. 在rules中包含 ...
- Spring Security入门(2-3)Spring Security 的运行原理 4 - 自定义登录方法和页面
参考链接,多谢作者: http://blog.csdn.net/lee353086/article/details/52586916 http元素下的form-login元素是用来定义表单登录信息的. ...
- io流的关闭顺序
1.一般先打开的后关闭,后打开的先关闭 2.可以只关闭处理流,因为io流使用了装饰模式,所以关闭处理流时,会调用节点流的close()方法.
- 记录下项目中常用到的JavaScript/JQuery代码一(大量实例)
一直没有系统学习Javascript和Jquery,每次都是用到的时候去搜索引擎查,感觉效率挺低的.这边把我项目中用的的记录下,想到哪写哪,有时间再仔细整理. 当然,由于我主要是写后端java开发,而 ...
- layer ui插件显示tips时,修改字体颜色
今天做调查问卷,又遇到一个蛋疼小问题,记录下. 调查问卷有很多选项是要求必填的,如果不填的话,需要给出友好的提示.用的如下组件:http://layer.layui.com/ 1.之前一直默认用的: ...