装配bean
2016-07-12 23:00
260 查看
spring有三种装配bean的方式:隐式装配、java代码装配、xml装配
隐式装配最为省事方便,也称为自动化装配
java代码装配最为强大、安全、友好重构
这三种装配方式可以混搭着来用
隐式装配和java代码装配都是注解配置
在这里通过一个例子来讲述配置
有一个CD播放器,要依赖CD才能播放
CD的两个实现,一个是ThinkingJAVA,一个是LinuxBird
在这里ThinkingJAVA被Component标识成一个bean,bean的id自动为thinkingJAVA
cdPlayer中有一个自动cd,被标识为自动装配,且一定会装配,如果容器中不存在CD类型的bean,那么就会报错,如果required=false,则表示可装配时装配,如果没有的装配则不会去装配
定义完bean了,现在要把bean装配到容器AppliacationContext中
隐式装配既自动扫包
因为自动扫包默认是关闭的,可以通过java代码开启,也可以通过xml开启
最好把配置的类单独放在配置包,不要跟业务逻辑搅在一起
在xml文件中加上这么一句
bean的id就是方法名
可以看到这种java代码来装配的方式
可以用java代码来构造出实例,所以很强大,有很多种可能性
同时bean默认是单例的
java代码装配和xml装配可以整合起来
现在有CDConfig.class和CDPlayer.class两个装配类
将他们合为一个SoundsystemConfig.class
隐式装配最为省事方便,也称为自动化装配
java代码装配最为强大、安全、友好重构
这三种装配方式可以混搭着来用
隐式装配和java代码装配都是注解配置
在这里通过一个例子来讲述配置
有一个CD播放器,要依赖CD才能播放
CD的两个实现,一个是ThinkingJAVA,一个是LinuxBird
注解配置
定义bean
@Component public class ThinkingJAVA{ public void play(){ System.out.println("java思想"); } }
在这里ThinkingJAVA被Component标识成一个bean,bean的id自动为thinkingJAVA
@Component public class CDPlayer { @Autowired(required=true) public CD cd; public void play(){ cd.play(); } }
cdPlayer中有一个自动cd,被标识为自动装配,且一定会装配,如果容器中不存在CD类型的bean,那么就会报错,如果required=false,则表示可装配时装配,如果没有的装配则不会去装配
隐式装配
定义完bean了,现在要把bean装配到容器AppliacationContext中隐式装配既自动扫包
因为自动扫包默认是关闭的,可以通过java代码开启,也可以通过xml开启
通过java代码开启自动扫包
@Configuration //扫描当前类的包及其自包 //@ConponentScan() //扫描string指定包及其子包 //不推荐这种方式,不利于代码重构,也不好检查错误 //@ConponenetScan(basePackages="soundsystem") //扫描指定class所在的包及其子包 //推荐这种方式,利于代码重构 //可以设置一个空接口用来标识基础包 //表示扫描CD类和CDPlayer所在的包及其子包 @ConponentScan(basePackageClasses={CD.class,CDPlayer.class}) public class CDPlayerConfig { }
最好把配置的类单独放在配置包,不要跟业务逻辑搅在一起
xml开启自动扫包
<context:component-scan base-package="要扫描的包及其子包"></context:component-scan>
在xml文件中加上这么一句
java代码装配
@Configuration public class CDPlayerConfig { //指定bean @Bean public ThinkingJAVA thingkingJAVA(){ return new ThinkingJAVA(); } @Bean public CDPlayer cDPlayer(){ return new CDPlayer(); } }
bean的id就是方法名
可以看到这种java代码来装配的方式
可以用java代码来构造出实例,所以很强大,有很多种可能性
同时bean默认是单例的
混搭装配
java代码装配和xml装配可以整合起来
将两个java装配类合为一个
现在有CDConfig.class和CDPlayer.class两个装配类将他们合为一个SoundsystemConfig.class
@Configuration @Import(CDConfig.class,CDPlayer.class) //如果要整合xml //@ImportResource("classpath:cdconfig.xml") public class SoundsystemConfig { }
相关文章推荐
- HDU 4507 吉哥系列故事——恨7不成妻
- C语言学习-分支结构
- MyBatis
- 四种常用的标准自定义View方法(上)
- flume
- java基础之----匿名内部类
- Retrofit 一种适用于Android和Java的类型安全的http客户端
- Android Studio官方文档之创建可调整大小的位图
- Extended WPF toolkit 安装使用指南 —— V1.6版本【2016-06-19】版本
- 第十八天:规划风险管理和识别风险
- linux内核栈和用户栈(二)
- 第十八天:规划风险管理和识别风险
- μC/OS-II任务管理中的主要函数解析
- ECSHOP因PHP版本导致的错误
- Spring 配置笔记
- “不务正业”玩投资的联通能翻身吗?
- 困扰一周多的问题总算解决了
- POJ2975 Nim
- android服务之录音功能
- struts2 结果页面配置