美文网首页Java
Java Spring-自动装配Bean和bean之间的关系

Java Spring-自动装配Bean和bean之间的关系

作者: 一亩三分甜 | 来源:发表于2020-01-06 22:00 被阅读0次

可以使用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>

相关文章

网友评论

    本文标题:Java Spring-自动装配Bean和bean之间的关系

    本文链接:https://www.haomeiwen.com/subject/gsdlactx.html