Spring - bean 继承与依赖

来源:互联网 发布:arcgis有mac版吗 编辑:程序博客网 时间:2024/05/23 21:45

bean 继承

  1. Spring 允许继承 bean 的配置, 被继承的 bean 称为父 bean. 继承这个父 Bean 的 Bean 称为子 Bean

  2. 子 Bean 从父 Bean 中继承配置, 包括 Bean 的属性配置

  3. 子 Bean 也可以覆盖从父 Bean 继承过来的配置

  4. 父 Bean 可以作为配置模板, 也可以作为 Bean 实例. 若只想把父 Bean 作为模板, 可以设置 <bean> 的abstract 属性为 true, 这样 Spring 将不会实例化这个 Bean

  5. 并不是 <bean>元素里的所有属性都会被继承. 比如: autowire, abstract 等.

  6. 也可以忽略父 Bean 的 class 属性, 让子 Bean 指定自己的类, 而共享相同的属性配置. 但此时 abstract 必须设为 true

<!--    <bean id="address" class="com.web.autowire.Address" p:city="Beijing" p:street="huilongguan" ></bean>-->    <!-- abstract bean can't be instantiated !! -->    <bean id="address" class="com.web.autowire.Address" p:city="Beijing" p:street="huilongguan" abstract="true" ></bean>    <!-- Override the parent property -->    <bean id="address2"  p:street="WuDaoKou" parent="address" p:city="Beijing^"></bean>

bean 依赖

Spring 允许用户通过 depends-on 属性设定 Bean 前置依赖的Bean,前置依赖的 Bean 会在本 Bean 实例化之前创建好如果前置依赖于多个 Bean,则可以通过逗号,空格或的方式配置 Bean 的名称

实例化person时,要求必须有一个关联 car ;若无,则出错 !!!

<!-- depends on Car !! -->    <bean id="person" class="com.web.autowire.Person" p:name="Audi" p:address-ref="address2" depends-on="car"></bean>

这里写图片描述

    • 添加 car 配置
<bean id="car" class="com.web.autowire.Car" p:brand="Audi" p:price="500000.0"></bean>    <!-- depends on Car !! -->    <bean id="person" class="com.web.autowire.Person" p:name="Audi" p:address-ref="address2" depends-on="car"></bean>
      • result as follows :
Person [address=Address [city=Beijing^, street=WuDaoKou], car=null, name=Audi]

PS : 设置了依赖属性,只是在实例化当前bean作检查,并不代表,同时为当前Person bean中同名同类型属性 car 赋值 !!!

<!-- depends on Car !! -->    <bean id="person" class="com.web.autowire.Person" p:name="Audi" p:address-ref="address2" depends-on="car">        <property name="car" ref="car"></property>    </bean>
    • result as follows :
Car [brand=Audi, price=5000.0]Person [address=Address [city=Beijing^, street=WuDaoKou], car=Car [brand=Audi, price=5000.0], name=Audi]

正确结果 !!!

0 0
原创粉丝点击