spring自动装配:
xml配置里的bean自动装配
spring IOC容器可以自动装配bean,需要做的仅是在bean的autowire属性里指定自动装配的形式。
1.byType(根据类型自动装配):
若IOC容器中有多个与目标bean类型一致的bean,在这种情况下,spring将无法判定哪个bean最适合该属性,所以不能执行自动装配。
2.byName(根据名称自动装配):
必须将目标bean的名称和属性名设置的完全相同。
3.constructor(通过构造器自动装配):
若bean中存在多个构造器,则此种方法比较复杂,不推荐使用。
示例:
<bean id = "address" class = "com.hl.spring.autowrite.Address"
p:city="Beijing" p:street="huilongguan">
</bean>
<bean id = "address2" class = "com.hl.spring.autowrite.Address"
p:city="Beijing" p:street="huilongguan">
</bean>
<bean id = "car" class = "com.hl.spring.autowrite.Car"
p:brand="Audi" p:price="3000000">
</bean>
<!-- 手动装配
<bean id = "person" class = "com.hl.spring.autowrite.Person"
p:address-ref="address" p:car-ref="car" p:name="Tom">
</bean>
-->
<!-- 可以使用autowire 属性指定自动装配的方式 -->
<!--
byName根据bean的名称和当前bean的setter风格的属性名进行自动装配,若有匹配的则进行自动装配,若没有匹配的则不装配
。
<bean id = "person" class = "com.hl.spring.autowrite.Person"
p:name="Tom" autowire = "byName">
</bean>
-->
<!--
byType 根据bean的类型和当前bean的属性的类型进行自动装配。若IOC容器中有一个以上的类型匹配的bean,则抛异常。
-->
<bean id = "person" class = "com.hl.spring.autowrite.Person"
p:name="Tom" autowire = "byType">
</bean>
自动装配的缺点:
1.在bean配置文件中设置autowire属性进行自动装配将会装配bean的所有引用属性。然而,若只希望装配个别属性时,autowire属性就不够灵活
了。
2.autowire属性要么根据类型自动装配,要么根据名称自动装配,不能两者兼而有之。
3。一般情况下,在实际项目中很少使用自动装配功能,因为明确清晰的配置文档更好。但在整合框架的时候会使用它。
04-19
1343

04-12
1506

08-03
5285

02-03
2922

02-18
765
