今天我也遇到了這個問題。對我而言,可接受的解決方案是使用SpEL,而SpEL不支持多個語句 - 創建兩個附加列表的輔助類。
上下文可能這樣實現:
<util:list id="list1">
<value>str1</value>
<value>str2</value>
</util:list>
<util:list id="list2">
<value>str3</value>
<value>str4</value>
</util:list>
<bean ...>
<property name="propertyThatRequiresMergedList"
value="#{ new x.y.springs.StringListsMerger().merge(@list1, @list2) }" />
</bean>
和類:
package x.y.springs;
import java.util.List;
public abstract class ListsMerger<T extends List> {
public T merge(T ... lists) {
T container = createContainer();
for (T list : lists) {
container.addAll(list);
}
return container;
}
public abstract T createContainer();
}
package x.y.springs;
import java.util.ArrayList;
import java.util.List;
public class StringListsMerger extends ListsMerger<List<String>> {
@Override
public List<String> createContainer() {
return new ArrayList<String>();
}
}
閱讀了許多解決方案後,我想出了下列操作之一: http://stackoverflow.com/questions/14520536/spring-collection-merge/14521537#14521537 – BTakacs
參見HTTP://計算器.com/questions/4656460/how-to-extend-already-defined-lists-and-map-in-spring-application-context – Vadzim