可以使用autowire属性指定自动装配的方式,byName:根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的,则进行自动装配,若没有匹配的,则不装配。byType:根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有1个以上的类型匹配的bean,则抛异常。
1.byName
<bean id="address" class="com.cloud.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
<bean id="car" class="com.cloud.spring.beans.autowire.Car"
p:brand="Audi" p:price="300000">
</bean>
<!--
<bean id="person" class="com.cloud.spring.beans.autowire.Person"
p:name="Tom" p:address-ref="address" p:car-ref="car">
</bean>
-->
<bean id="person" class="com.cloud.spring.beans.autowire.Person"
p:name="Tom" autowire="byName">
</bean>
2.byType
<bean id="address" class="com.cloud.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
<bean id="car" class="com.cloud.spring.beans.autowire.Car"
p:brand="Audi" p:price="300000">
</bean>
<!--
<bean id="person" class="com.cloud.spring.beans.autowire.Person"
p:name="Tom" p:address-ref="address" p:car-ref="car">
</bean>
-->
<bean id="person" class="com.cloud.spring.beans.autowire.Person"
p:name="Tom" autowire="byType">
</bean>
Bean之间的关系
继承:使用bean的parent属性指定继承哪个bean的配置
<bean id="address" class="com.cloud.spring.beans.autowire.Address"
p:city="BeiJing" p:street="WuDaoKou">
</bean>
<bean id="address2" p:city="BeiJing" p:street="DaZhongSi" parent="address">
</bean>
抽象:bean的abstract属性为true的bean,这样的bean不能被IOC容器实例化,只用来被继承配置,若一个bean的class属性没有指定,则该bean必须是一个抽象bean。
<bean id="address" p:city="BeiJing" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" class="com.cloud.spring.beans.autowire.Address" parent="address">
</bean>
依赖:要求配置Person时,必须有一个关联的car!换句话说person这个bean依赖于Car这个bean。Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好,如果前置依赖于多个Bean,则可以通过逗号,空格或的方式配置Bean的名称。
<bean id="address" p:city="BeiJing" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" class="com.cloud.spring.beans.autowire.Address" parent="address">
</bean>
<bean id="address3" class="com.cloud.spring.beans.autowire.Address" parent="address2" p:street="DaZhongSi">
</bean>
<bean id="car" class="com.cloud.spring.beans.autowire.Car" p:brand="Audi" p:price="300000">
</bean>
<!-- 要求再配置Person时,必须有一个关联的car! 换句话说person 这个bean依赖于Car这个bean-->
<bean id="person" class="com.cloud.spring.beans.autowire.Person" p:name="Tom" p:address-ref="address2" depends-on="car">
</bean>
网友评论