上面的ListMergerFactoryBean解決方案存在一個子錯誤。
配置:
<util:list id="listA" value-type="java.lang.String">
<value>fooA</value>
<value>barA</value>
</util:list>
<util:list id="listB" value-type="java.lang.String">
<value>fooB</value>
<value>barB</value>
</util:list>
<util:list id="listC" value-type="java.lang.String">
<value>fooC</value>
<value>barC</value>
</util:list>
<bean id="AwithB" class="com.util.ListMergerFactoryBean">
<property name="listOfLists">
<list>
<ref bean="listA" />
<ref bean="listB" />
</list>
</property>
</bean>
<bean id="AwithC" class="com.util.ListMergerFactoryBean">
<property name="listOfLists">
<list>
<ref bean="listA" />
<ref bean="listC" />
</list>
</property>
</bean>
有了這個配置,當豆AwithB具有AwithC的預期的內容,你可能會驚訝。 ListA是一個單例,getObject方法改變它,因此即使Bean工廠不是單例,它也會爲ListMergerFactoryBean的所有用戶修改它。解決方法是在listOfLists不要再使用第一個列表:
@Override
public List getObject() throws Exception {
List mergedList = new ArrayList();
for (List list : listOfLists) {
mergedList.addAll(list);
}
return mergedList;
}
無法您只需注入和listA的成數組listB第三豆,並使用Java代碼合併兩個列表? –
對不起,這是一個討厭的,具體的解決方案... – BTakacs
可能的重複[有沒有辦法在spring配置文件中重新使用?](http://stackoverflow.com/questions/12760436/is-there-a-way-to-re-use-a-utillist-in-spring-configuration-file) –