Spring XML Configuration - 如何为一组对象指定属性值?

时间:2015-02-12 04:12:16

标签: java spring dependency-injection

说我定义了以下bean。

<bean id="testBean1" class="org.springframework.beans.TestBean" scope="prototype">
    <property name="hariColor" value="Black"/>
    <property name="spouse">
        <bean class="org.springframework.beans.TestBean">
            <property name="age" value="11"/>
        </bean>
    </property>
</bean>

<bean id="testBean2" class="org.springframework.beans.TestBean" scope="prototype">
    <property name="hariColor" value="Black"/>
    <property name="spouse">
        <bean class="org.springframework.beans.TestBean">
            <property name="age" value="19"/>
        </bean>
    </property>
</bean>

我有一组带有hairColor Black的豆子,另一套带有hairColor Blonde等的豆子。有没有一种方法可以将所有黑发颜色豆组合在一起并在一个地方定义hairColor而不是指定每个豆?

1 个答案:

答案 0 :(得分:1)

是的,您可以通过Spring的bean中的abstract="true"元素实现它,如下所述

<bean id="blackHairColor" abstract="true">
    <property name="prop1" ref="someBlackBean"/>
    <property name="prop2" ref="someOtherBlackBean"/>
</bean>

<bean id="blondeHairColor" abstract="true">
    <property name="prop1" ref="someBlondeBean"/>
    <property name="prop2" ref="someOtherBlondeBean"/>
</bean>

<bean id="someBean1" class="a.b.c.d" parent="blackHairColor">
    <property name="someOtherProp" ref="someRef1"/>
</bean>

<bean id="someBean2" class="a.b.c.d" parent="blondeHairColor">
    <property name="someOtherProp" ref="someRef1"/>
</bean>

这里我们定义两个具有相应属性的abstract bean。请注意,这些abstract bean没有附加class,因此会创建一组公共属性,可以在其他bean中重复使用。

继承abstract bean只需在bean定义的parent元素中提及它们的id。另请注意,bean类不需要继承任何类来继承另一个bean,即类a.b.c.d不需要继承任何类来继承bean继承。