Spring学习之Bean的自动装配(非注解)
来源:互联网 发布:淘宝如何好评截图 编辑:程序博客网 时间:2024/06/08 19:21
一、四种类型的自动装配
byName
把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中。如果没有跟属性名字相匹配的Bean,则该属性不进行装配。
byType
把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应的属性中。如果没有跟属性的类型相匹配的Bean,则该属性不被装配。
constructor
把与Bean构造器入参具有相同类型的其他Bean自动装配的到Bean的构造器对应的入参中。
autodetect
首先尝试使用constructor进行自动装配,如果失败则尝试使用byType进行自动装配。
1、byName自动装配
【装配过程】Spring会为属性自动装配ID与该属性名字相同的Bean
【缺点】需要时Bean的名字与其他Bean的属性名字一致
<bean id="instrument" class="com.bbp.springInAction.beans.Saxophone"/>
<bean id="kenny" class="com.bbp.springInAction.beans.Instrumentalist" autowire="byName">
<property name="song" value="MySun"/>
</bean>
2、byType自动装配
【装配过程】Spring会寻找类型与需要填充的属性相同的Bean
【局限性】Spring找到多个类型与需要自动装配的属性的类型相匹配的Bean时会抛出异常
【局限性的解决办法】
①为自动装配标识一个首选Bean
可以使用<bean>元素的primary属性,默认属性为true,在使用时是将非首选Bean的primary属性设置成false。
②取消某个Bean自动装配的候选资格
排除某些Bean可以设置Bean的autowire-candidate属性为false。
3、constructor自动装配
【装配过程】Spring会在应用上下文中自动选择Bean注入到构造器入参中
【局限性】除了和byType一样的局限性外,如果有多个构造器,它们都满足自动装配的条件,Spring也会
抛出异常
4、最佳的自动装配——autodetect
【装配过程】当配置一个Bean的aurowire属性为autodetect时,Spring将首先尝试使用constructor自动装配,如果没有发现与构造器相匹配的Bean时,Spring将尝试使用byType自动装配。
二、默认的自动装配
<beans default-autowire="byType"><beans/>
设置了上述的配置,会使Spring容器中的自动装配装配aurowire属性默认为default-autowire所配置的方式
【说明】
① autowire默认值是default,并非是none;defualt-autorwire的默认值是noone,即指定的Spring配置文件中的所有Bean都不使用自动装配;在autowire的默认情况下是遵循defualt-autorwire的设置,即指定的Spring配置文件中的所有Bean都不使用自动装配。
②在<beans/>元素中设置了default-autowire属性后,可以使用<bean/>元素中的 aurowire属性来覆盖<beans/>元素所配置的默认自动装配策略
四、混合使用自动装配和限制装配
在对某个Bean选择了自动装配的策略后,任然可以为该Bena的任意一个属性配置<property/>元素。这样在采用自动装配策略后,通过显示地装配Bean的属性可以覆盖该属性的自动装配,进而规避了“多匹配”而抛出的异常。
【注意】不能混合使用constructor自动装配策略和<constructor-arg/>元素
- Spring学习之Bean的自动装配(非注解)
- Spring学习:bean的自动装配(注解)
- Spring学习笔记(10.Spring Bean装配之Bean的定义域及注解实现)
- spring注解自动装配Bean
- Spring学习笔记(8.Spring Bean装配之自动装配)
- Spring 4.0 学习日记(5) ---bean的自动装配
- spring入门(8)--装配Bean之自动装配
- Spring Bean装配之自动装配
- Spring Bean装配之基于Java的容器注解说明——基于泛型的自动装配
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Spring Bean自动装配和注解注入
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Spring常用注解,自动扫描装配Bean
- Delphi,在DelphiXE下使用DirectX的初步摸索
- Angular find controller from element or no element
- 添加本机jdk到MyEclipse默认
- 欢迎使用CSDN-markdown编辑器
- hdu 5253 连接的管道(kruskal)
- Spring学习之Bean的自动装配(非注解)
- 【机房收费系统】——收官
- POJ 1679 最小生成树是否唯一 次小生成树
- UIView添加点击事件
- Ambari-Metrics配置指南
- class类名命名规则
- Java中Synchronized的用法
- Spring中控制反转怎么配置的?比如Action类有个成员变量TestService testService,Action类就可以直接用TestServiceIMP中的方法了
- 获取Windows系统版本