Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
来源:互联网 发布:销售提成计算软件 编辑:程序博客网 时间:2024/06/06 08:24
一、Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过程。
二、配置:
在 <bean> 的 autowire 属性里指定自动装配的模式。默认为 no 。可以通过 <beans> 根元素的 default-autowire 属性改变默认值。
三、自动装配的三种模式:
1.byType(根据类型自动装配):若 IOC 容器中出现多个与目标 Bean 类型一致的 Bean。Spring 无法识别使用哪个,有二义性。报异常。
2.byName(根据名称的自动装配):必须将当前 Bean 的属性名和目标 Bean 的 id 值设置为相同。
3.construtor(根据构造器自动装配):不推荐使用。
四、例子
e1:之前的方式,通过 <property> 来指定。
<bean class="com.nucsoft.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.nucsoft.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.nucsoft.spring.Employee"> <property name="empName" value="emp01"/> <property name="phone" ref="phone"/> <property name="address" ref="address"/></bean>
输出:Employee{empName='emp01', address=Address{addressName='beijing'}, phone=Phone{phoneNum='123456789'}}
e2:根据名称的自动装配
<bean class="com.nucsoft.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.nucsoft.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.nucsoft.spring.Employee" autowire="byName"> <property name="empName" value="emp01"/></bean>
输出:Employee{empName='emp01', address=Address{addressName='beijing'}, phone=Phone{phoneNum='123456789'}}
e3:根据类型的自动装配
<bean class="com.nucsoft.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.nucsoft.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.nucsoft.spring.Employee" autowire="byType"> <property name="empName" value="emp01"/></bean>
输出:Employee{empName='emp01', address=Address{addressName='beijing'}, phone=Phone{phoneNum='123456789'}}
如果定义多个的话,首先在 idea 中,spring config 文件会报错,给出提示。另外,如果运行的话,会报一个 org.springframework.beans.factory.NoUniqueBeanDefinitionException 这样的异常。
五、细节问题
1.对 <bean> 的属性设置 autowire 属性进行自动装配将会装配 Bean 的所有属性。若希望只装配某个属性时,autowire 属性就不够灵活了。
2.虽然可以通过 autowire 属性能自动装配,但是优先级要低于通过 <property> 配置的属性。如:
<bean class="com.nucsoft.spring.Phone" id="phone02" p:phoneNum="1234567890"/><bean class="com.nucsoft.spring.Address" id="address"> <property name="addressName" value="beijing"/></bean><bean class="com.nucsoft.spring.Phone" id="phone" p:phoneNum="123456789"/><bean id="employee" class="com.nucsoft.spring.Employee" autowire="byName"> <property name="empName" value="emp01"/> <property name="phone" ref="phone02"/></bean>
3.对于 autowire 属性的两种类型:根据类型或根据名称的自动装配不能同时使用。
4.在实际项目中很少使用基于 XML 的 Bean 的自动装配,因为明确清晰配置更易读。
- Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
- 简化Spring的xml文件配置-自动装配Bean属性
- Spring XML配置自动装配的Bean
- Spring的《XML显式装配bean》- XML自动装配
- Spring:传统的XML文件装配Bean
- Spring的《XML显式装配bean》- 默认自动装配
- spring中bean的自动装配(6)
- spring中bean的自动装配
- Spring中Bean的自动装配
- spring框架中Bean的自动装配
- spring基础-Bean的装配方式(一)基于xml的装配
- spring基础-Bean的装配方式(三)自动装配
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- spring bean的自动装配
- spring bean的自动装配
- Spring的自动装配Bean
- Spring bean的自动装配
- Radan 自动配刀模板的使用
- 安卓学习笔记之Activity(一)
- 注释一个opencv摄像头程序
- Gradle所有版本下载地址
- 神器 GsonFormat
- Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
- Android 浮动菜单效果控件
- UTMI及USB 2.0 PHY高速传输特性分析
- 调试服务器端代码
- 代码动态读取xml配置文件
- JAVA使用相对路径读取配置文件
- Java压缩技术(二) ZIP压缩——Java原生实现
- 决策树的python代码注解
- freescale飞思卡尔Imux6 GPIO管脚配置思路