`
Phoenix_MVP
  • 浏览: 337436 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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配置。

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics