Spring继承

Spring支持继承,可以分为类继承和属性继承

1. 类继承

   Spring属性:

 (1)abstract: 如果设置为true,表示定义的bean是抽象的,告诉spring不要实例化这个bean;

问题:必须是抽象类么?可以不是抽象类么?

 (2)parent: 指明bean的id,对bean的作用,相当于extends对于java类的作用;

   场景:有三个Bean:

<bean id = "bean1" class = "……TestBean">

<property name="sex" value="male"/>

</bean>

<bean id = "bean2" class = "……TestBean">

<property name="sex" value="male"/>

</bean>

<bean id = "bean3" class = "……TestBean">

<property name="sex" value="female"/>

</bean>

  修改:定义spring 父bean

<bean id ="BaseBean" class ="……TestBean">

<property name="sex" value="male"/>

</bean>

定义子Bean

<bean id ="bean1" parent = "BaseBean"/>      继承父Bean的属性

<bean id ="bean2" parent = "BaseBean"/> 

<bean id ="bean3" parent = "BaseBean">    覆盖父Bean的属性

<property name="sex" value="female"/>

</bean>

子bean可以继承父Bean的属性,也可以覆盖父Bean的属性

2. 属性继承

    几个不同Bean之间存在相同的属性,可以抽离出来

    场景: 

<bean id = "bean1" class = "……ATestBean">

<property name="sex" value="male"/>

<property name="task" ref="task"/>

</bean>

<bean id = "bean2" class = "……BTestBean">

<property name="sex" value="male"/>

</bean>

     修改:(1) 抽取公共属性

<bean id = "baseSex" abstract="true">

<property name="sex" value="male"/>

</bean>

(2)bean修改

<bean id = "bean1" class = "……ATestBean" parent="baseSex">

<property name="task" ref="task"/>

</bean>

<bean id = "bean2" class = "……BTestBean" parent="baseSex"/>

这里bean同时有parent和class属性,其中parent指向的baseSex,就是为了让不同Bean之间共享相同的属性值;在TransactionProxyFactoryBean声明业务时,Bean属性继承能够明显的减少冗余的xml配置。

猜你喜欢

转载自phoenix-mvp.iteye.com/blog/1629675
今日推荐