关于spring中的bean定义,parent属性是什么意思?
1.
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionAttributes">
<props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
2.
<bean id="carnetMgr" parent="txProxyTemplate">
<1property name="target">
<bean class="ecustoms.carnet.app.biz.CarnetMgr">
<property name="extensionHistoryDAO" ref="extensionHistoryDAO"/>
<property name="stockTransactionDAO" ref="stockTransactionDAO"/>
<property name="carnetDAO" ref="carnetDAO"/>
</bean>
</property>
</bean>
表示继承的父类
如果有很多继承同一个父类的BEAN
那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性
bean定义继承父bean定义,它可以覆盖父bean的一些值,或者它需要的值。
那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性
如何将公共的注入定义描述出来?
* 通过<bean>标签定义公共的属性,指定abstract=true
* 具有相同属性的类在<bean>标签中指定其parent属性
例如:一个对象有三个属性分别为:id、name、password,另一个对象有四个属性为id、name、loginpass
例子代码:
Bean1.java
public class Bean1 {
private int id;
private String name;
private String password;
Bean2.java
public class Bean2 {
private int id;
private String name;
private String loginpass;
applicationContext.xml:
<bean id="beanAbstract" abstract="true">
<property name="id" value="1"/>
<property name="name" value="Jack"/>
</bean>
<bean id="bean3" class="spring.Bean1" parent="beanAbstract">
<!-- 可以覆盖父类赋予的值 -->
<property name="name" value="Tom"/>
<property name="password" value="123"/>
</bean>
<bean id="bean4" class="spring.Bean2" parent="beanAbstract">
<property name="loginpass" value="123"/>
</bean>
转自:https://blog.youkuaiyun.com/lushuaiyin/article/details/7439816
bean使用abstract=true时,可以有class,也可以没有class