Spring的IOC容器—Bean的自动装配
来源:互联网 发布:获取二维码扫描枪数据 编辑:程序博客网 时间:2024/03/28 18:26
我们对XML配置文件装配Bean的方式都很熟悉了,但是随着业务的复杂性,我们可能编写越来越复杂的XM配置。
Spring提供了4种类型的自动装配的方式,帮助我们减少XML的配置数量。如下:
byName:根据与bean的属性具有相同名字(或者ID)的其他bean进行注入
byType: 根据与bean的属性具有相同类型的其他bean进行注入
constructor:根据与bean的构造函数参数有相同类型的bean进行注入
autodetect : 首先尝试使用constructor进行注入,失败则尝试使用byType。
1. ByName
为属性自动装配ID与属性的名字相同的bean。
<bean id="Huohuo" class= "com.tgb.depencyimpl.Huohuo"> <property name="eat" ref="WideMouthEat"></property> </bean> <bean id="WideMouthEat" class="com.tgb.depencyimpl.WideMouthEat"> </bean>
修改配置文件:
<bean id="Huohuo" class= "com.tgb.depencyimpl.Huohuo" autowiire=”byName”/> <bean id="WideMouthEat" class="com.tgb.depencyimpl.WideMouthEat"> </bean>
byName自动遵循一项约定:为属性自动装配ID与属性的名字相同的bean。通过设置autowire属性为byName,Spring将特殊对待Huohuo的所有属性,为这些属性寻找与名字相同的spring bean。 Spring会发现 WideMouthEat属性可以通过setter注入来进行自动装配。
2. ByType
类似于byName,只不过不是匹配属性的名字,而是检查属性的类型。例如上面的例子autowire属性设置为byType,Spring会查找哪一个bean的类型与WideMouthEat类型相匹配。如果匹配,则把该bean装配到Huohuo的属性WideMouthEat中。
注意:如果存在多个Bean,他们的类型与需要自动装配的类型相同。可以使用primary属性,标识首选bean。默认true.也可以设置autowire-candidate属性为false。
3. Constructor
如果要通过构造器注入来配置Bean,我们可以移除<constructor-arg>元素,采用autowire=”constructor”属性自动选择bean注入到构造器中。例如:通过调用public Yunyun(Eat eat)将其注入。
<bean id="Yunyun" class= "com.tgb.depencyimpl.Yunyun" autowire="constructor "> </bean> <bean id="Eat" class="com.tgb.depencyimpl.Eat"/>
4. Autodetect
这种情况下Spring会先尝试使用constructor自动装配,如果没有发现与构造器相匹配的bean时,Spring将尝试使用byType自动装配。例如:
<bean id="Yunyun" class= "com.tgb.depencyimpl.Yunyun" autowire="constructor "> </bean> <bean id="Eat" class="com.tgb.depencyimpl.Eat"/>
此例中,通过调用public Yunyun(Eat eat)将其注入。
总结:自动装配可以让我们减少XML配置数量,但是同时也增加了配置文件的复杂性。特别是应付多种相同Bean需要装配时,需要花费力气去知道哪一个Bean需要被自动注入。
- Spring的IOC容器—Bean的自动装配
- Spring IoC容器--Bean的装配
- Spring IOC 容器自动装配 Bean
- Spring IOC--Bean的装配
- spring ioc 容器装配bean
- Spring IOC容器-自动装配
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- spring bean的自动装配
- spring bean的自动装配
- Spring的自动装配Bean
- Spring bean的自动装配
- 【Spring】Bean的自动装配
- Spring Bean的自动装配
- Spring bean的自动装配
- spring <bean>的自动装配
- Spring Bean的装配 -- 自动装配
- Spring的IOC及bean的装配
- AndroidMainfest.xml详解——<meta-data>
- 这两天比较烦躁
- LeetCode Remove Duplicates from Sorted Array II
- 黑马day11 悲观锁&乐观锁
- Java学习日记之方法
- Spring的IOC容器—Bean的自动装配
- 10_Android中通过HttpUrlConnection访问网络,Handler和多线程使用,读取网络html代码并显示在界面上,ScrollView组件的使用
- 黑马程序员-java基础-面向对象总结
- java集合
- Oracle 11.2.0.2 安装条件检查之pdksh 包
- 拉格朗日插值
- .Net配置文件——反射+配置文件存储类型实例
- 常见小问题(待更新)
- Unity 粒子系统