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

Spring XML Configuration - How to specify property value for a group of objects?

假设我定义了以下 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 的 bean,另一组 hairColor Blonde 的 bean 等。Spring 中有没有办法将所有黑色头发颜色的 bean 组合在一起,并只在一个中定义 hairColor放置而不是为每个 bean 指定?

是的,您可以通过 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 beans 具有各自的属性。请注意,这些 abstract bean 没有附加 class,因此创建了一组 公共属性集 ,可以在其他 bean 中重复使用( s).

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