装配bean
spring有三种装配bean的方式:隐式装配、java代码装配、xml装配
隐式装配最为省事方便,也称为自动化装配
这三种装配方式可以混搭着来用
在这里通过一个例子来讲述配置
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,则表示可装配时装配,如果没有的装配则不会去装配
隐式装配
隐式装配既自动扫包
通过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代码装配和xml装配可以整合起来
将两个java装配类合为一个
将他们合为一个SoundsystemConfig.class
@Configuration
@Import(CDConfig.class,CDPlayer.class)
//如果要整合xml
//@ImportResource("classpath:cdconfig.xml")
public class SoundsystemConfig {
}
装配bean的更多相关文章
- [spring]03_装配Bean
3.1 JavaBean 3.1.1 JavaBean 是什么 JavaBean 是一种JAVA语言写成的可重用组件. 为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器. Jav ...
- Spring学习系列(三) 通过Java代码装配Bean
上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...
- IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注解 ...
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring IOC装配Bean(注解方式)
1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- 自动装配Bean
Spring提供了几种技巧,可以减少XML的配置数量: 自动装配(autowiring):可以减少<property>(setter注入)和<constructor-arg>( ...
- Spring3系列8- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
随机推荐
- LINQ系列:Linq to Object相等操作符
相等操作符通过比较两个序列来检查它们相应的元素是否相同.如果两个序列有相同的元素,并且对应元素的值相同,则认为这两个序列是相等的. SequenceEqual操作符判定两个集合是否相等.判定是通过并行 ...
- Android数据存储之Sqlite的介绍及使用
前言: 本来没有打算整理有关Sqlite数据库文章的,最近一直在研究ContentProvider的使用,所有觉得还是先对Sqlite进行一个简单的回顾,也方便研究学习ContentProvider. ...
- scikit-learn K近邻法类库使用小结
在K近邻法(KNN)原理小结这篇文章,我们讨论了KNN的原理和优缺点,这里我们就从实践出发,对scikit-learn 中KNN相关的类库使用做一个小结.主要关注于类库调参时的一个经验总结. 1. s ...
- JQuery EasyUI datagrid 复杂表头处理
下面是我项目中和网上收集的EasyUI的表头处理的,合适的拿去用吧. 例子1: $('#day_health').datagrid({ url: "sqb_b ...
- K & DN 的前世今生(微软开源命名变革)
一个非常有意思的 Issue:Can we rename K? 在这个 Issue 中,有大量的社区开发者讨论了微软开源命名问题,主要是 K 如何进行替换掉?看来大伙都对微软项目命名有歧义,首先,再次 ...
- EntityFramework 7 OrderBy Skip Take-计算排序分页 SQL 翻译
先解释一下这个标题的意思,OrderBy 在 Linq 语句中,我们经常使用,比如 OrderBy(b => b.BlogId) 就是对 BlogId 字段进行升序排序,这是针对一个字段的排序, ...
- ios多线程-GCD基本用法
ios中多线程有三种,NSTread, NSOperation,GCD 这篇就讲讲GCD的基本用法 平时比较多使用和看到的是: dispatch_async(dispatch_get_global_q ...
- objective-c 语法快速过(7)编译器特性ARC
ARC(是编译器特性) ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内 ...
- CSS魔法堂:重拾Border之——不仅仅是圆角
前言 当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...
- null和undefined的一些区别
读了阮一峰的博客,自己总结一下,便记录一篇博客 在javacript的基本类型中,有2种基本类型,只有1个值,便是null和undefined,都表示的是"无".在一定程度上是相等 ...