Hoy en día yo estaba teniendo este problema también. Para mí, la solución aceptable era usar SpEL y, aunque SpEL no admite varias declaraciones, cree dos clases auxiliares que anexen listas.
Contexto podría implementarse como esto:
<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>
y clases:
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>();
}
}
Después de leer muchas soluciones, se me ocurrió la siguiente: http://stackoverflow.com/questions/14520536/spring-collection-merge/14521537#14521537 – BTakacs
Ver también http: // stackoverflow .com/questions/4656460/how-to-extend-already-defined-lists-and-maps-in-spring-application-context – Vadzim