SpringIOC容器-xml配置bean-xml中bean的父子关系

一、实验使用实体类

 

 

这2个类,并没有实际的父子关系,只是属性值一样

 

1.xml中,将Father类作为Son类的Parent

此时son这个bean的name是:llf,age是:22 。属性值完全继承于father这个bean,但是2个bean没有实际的继承关系,father只是作为一个模板的作用

<bean id="father" class="com.llf.bean.Father"  p:name="llf" p:age="22"></bean>
<bean id="son" class="com.llf.bean.Son" parent="father"></bean>

 

如果需要father这个bean,完全作为模板来使用,不需要实例化,那么只需要加上abstract属性,值为true,如果子bean不写class属性,class也会被继承

<bean id="father" class="com.llf.bean.Father"  abstract="true" p:name="llf" p:age="11"></bean>
<bean id="son" class="com.llf.bean.Son" parent="father"></bean>

 

如果需要某个bean必须有个前置bean,那么可以使用depends-on,值为beanName

  这里如果名字为father的bean在IOC容器中,那么启动时直接报错。 同时father这个bean也一定会在son实例化之前先加入IOC容器

 <bean id="father" class="com.llf.bean.Father" p:name="llf" p:age="11"></bean>

    <bean id="son" class="com.llf.bean.Son" parent="father" depends-on="father"></bean>

 

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

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

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

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

注意:

  并不是 <bean> 元素里的所有属性都会被继承. 比如: autowire, abstract 等.
  可以忽略父 Bean 的 class 属性, 让子 Bean 指定自己的类, 而共享相同的属性配置. 但此时 abstract 必须设为 true

 

posted @ 2020-04-17 22:06  linglongfang  阅读(458)  评论(0)    收藏  举报