Home » Java » Enterprise Java » Spring Collection Merging

About Biju Kunjummen

Spring Collection Merging

Spring collection merging is a feature that I first came across as an answer to a StackOverflow question

It is a way of creating a base collection (list, set, map or properties) and modifying this base collection in other beans, best explained using an example –

Consider a Person class with a field holding a list of addresses:

public class Person {
 private List<Address> addresses;

Assume that all Person instances have a common set of addresses, which can be specified using an abstract person bean this way:

<bean name='basePerson' class='Person' abstract='true'>
 <property name='addresses'>
   <bean class='Address' p:street='Street1' p:state='State1' p:zip='001'></bean>
   <bean class='Address' p:street='Street2' p:state='State2' p:zip='002'></bean>
   <bean class='Address' p:street='Street3' p:state='State3' p:zip='003'></bean>

Now, Person bean instances with addresses in addition to the addresses from the basePerson can be specified using Collection Merging feature this way – note the ‘merge=true’ attribute of list:

<bean name='person1' class='Person' parent='basePerson'>
 <property name='addresses'>
  <list merge='true'>
   <bean class='Address' p:street='Street4' p:state='State4' p:zip='004'></bean>

Collection merging also works with <set/>, <map/> and <props/>

With Spring 3.1 and higher, a simpler option though could be simply to use @Configuraion and @Bean options, as then the merging can be directly handled with Java code, for eg, an equivalent @Configuration for the above xml bean configuration:

public class CollectionConfig{
 private List<Address> baseAddresses(){
  return Lists.newArrayList(new Address('Street1', 'State1', '001'), new Address('Street2', 'State2', '002'), new Address('Street3', 'State3', '003'));
 public Person person1(){
  Person person1 = new Person();
  person1.getAddresses().add(new Address('Street4', 'State4', '004'));
  return person1;

Reference: Spring Collection Merging from our JCG partner Biju Kunjummen at the all and sundry blog.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

and many more ....


Leave a Reply

Your email address will not be published. Required fields are marked *


Want to take your Java Skills to the next level?
Grab our programming books for FREE!
  • Save time by leveraging our field-tested solutions to common problems.
  • The books cover a wide range of topics, from JPA and JUnit, to JMeter and Android.
  • Each book comes as a standalone guide (with source code provided), so that you use it as reference.
Last Step ...

Where should we send the free eBooks?

Good Work!
To download the books, please verify your email address by following the instructions found on the email we just sent you.