如何在spring配置中扩展列表

Bas*_*stl 20 spring

我已经用一些"常见"值定义了一个.如何通过其他值将公共列表扩展到各种新bean?

<util:list id="myCommonList" list-class="java.util.LinkedList">
 <bean .../>
 <bean .../>
 <bean .../>
 <bean .../>
</util:list>


<bean id="extension" parent="myCommonList">
  <bean ref="additionalValue"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

这会覆盖列表还是扩展它?

ska*_*man 34

你可以这样做,但不能使用<util:list>,这只是一种方便的语法.容器确实提供了"集合合并"功能,但您必须使用"旧"样式:

<bean id="parent" class="org.springframework.beans.factory.config.ListFactoryBean">
    <property name="sourceList">
        <list>
            <value>X</value>
        </list>
    </property>
</bean>

<bean id="child" parent="parent" class="org.springframework.beans.factory.config.ListFactoryBean">
    <property name="sourceList">
        <list merge="true">
            <value>Y</value>
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)


小智 8

基于skaffman的答案,你可以这样做:

<util:list id="parent">
    <value>X</value>
</util:list>

<bean id="child" parent="parent" class="org.springframework.beans.factory.config.ListFactoryBean">
    <property name="sourceList">
        <list merge="true">
            <value>Y</value>
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)