Spring Collections (List, Set, Map, and Properties) example

Spring examples to show you how to inject values into collections type (List, Set, Map, and Properties). 4 major collection types are supported :

  • List – <list/>
  • Set – <set/>
  • Map – <map/>
  • Properties – <props/>

Spring beans

A Customer object, with four collection properties.


package com.mkyong.common;

import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

public class Customer 
{
	private List<Object> lists;
	private Set<Object> sets;
	private Map<Object, Object> maps;
	private Properties pros;
	
	//...
}

See different code snippets to declare collection in bean configuration file.

1. List example


	<property name="lists">
		<list>
			<value>1</value>
			<ref bean="PersonBean" />
			<bean class="com.mkyong.common.Person">
				<property name="name" value="mkyongList" />
				<property name="address" value="address" />
				<property name="age" value="28" />
			</bean>
		</list>
	</property>

2. Set example


	<property name="sets">
		<set>
			<value>1</value>
			<ref bean="PersonBean" />
			<bean class="com.mkyong.common.Person">
				<property name="name" value="mkyongSet" />
				<property name="address" value="address" />
				<property name="age" value="28" />
			</bean>
		</set>
	</property>

3. Map example


	<property name="maps">
		<map>
			<entry key="Key 1" value="1" />
			<entry key="Key 2" value-ref="PersonBean" />
			<entry key="Key 3">
				<bean class="com.mkyong.common.Person">
					<property name="name" value="mkyongMap" />
					<property name="address" value="address" />
					<property name="age" value="28" />
				</bean>
			</entry>
		</map>
	</property>

4. Properties example


	<property name="pros">
		<props>
			<prop key="admin">[email protected]</prop>
			<prop key="support">[email protected]</prop>
		</props>
	</property>

Full Spring’s bean configuration file.


<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

	<bean id="CustomerBean" class="com.mkyong.common.Customer">

		<!-- java.util.List -->
		<property name="lists">
			<list>
				<value>1</value>
				<ref bean="PersonBean" />
				<bean class="com.mkyong.common.Person">
					<property name="name" value="mkyongList" />
					<property name="address" value="address" />
					<property name="age" value="28" />
				</bean>
			</list>
		</property>

		<!-- java.util.Set -->
		<property name="sets">
			<set>
				<value>1</value>
				<ref bean="PersonBean" />
				<bean class="com.mkyong.common.Person">
					<property name="name" value="mkyongSet" />
					<property name="address" value="address" />
					<property name="age" value="28" />
				</bean>
			</set>
		</property>

		<!-- java.util.Map -->
		<property name="maps">
			<map>
				<entry key="Key 1" value="1" />
				<entry key="Key 2" value-ref="PersonBean" />
				<entry key="Key 3">
					<bean class="com.mkyong.common.Person">
						<property name="name" value="mkyongMap" />
						<property name="address" value="address" />
						<property name="age" value="28" />
					</bean>
				</entry>
			</map>
		</property>

		<!-- java.util.Properties -->
		<property name="pros">
			<props>
				<prop key="admin">[email protected]</prop>
				<prop key="support">[email protected]</prop>
			</props>
		</property>

	</bean>

	<bean id="PersonBean" class="com.mkyong.common.Person">
		<property name="name" value="mkyong1" />
		<property name="address" value="address 1" />
		<property name="age" value="28" />
	</bean>

</beans>

Run it…


package com.mkyong.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App 
{
    public static void main( String[] args )
    {
    	ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");

    	Customer cust = (Customer)context.getBean("CustomerBean");
    	System.out.println(cust);
    	
    }
}

Output


Customer [

lists=[
1, 
Person [address=address 1, age=28, name=mkyong1], 
Person [address=address, age=28, name=mkyongList]
], 

maps={
key 1=1,
key 2=Person [address=address 1, age=28, name=mkyong1], 
key 3=Person [address=address, age=28, name=mkyongMap]
}, 

pros={[email protected], [email protected]}, 

sets=[
1, 
Person [address=address 1, age=28, name=mkyong1], 
Person [address=address, age=28, name=mkyongSet]]
]

Download Source Code

Download it – Spring-Collection-Example.zip (6 KB)

30 comments on “Spring Collections (List, Set, Map, and Properties) example

  1. Hi… Can you plz tell me the actual logic behind the searching beauty salon in particular aera project

    Reply
  2. I am getting the resulkt for the above code as :

    Customer [lists=[1, com.mkyong.common.Person@50675690, com.mkyong.common.Person@3ac42916]

    Reply
  3. I have downloaded the project and run in my system and i am getting the result as below:
    Customer [lists=[1, com.mkyong.common.Person@50675690, com.mkyong.common.Person@3ac42916]

    Reply
    1. Override toStirng method so it will print object data as string format

      Reply
  4. Is it not possible that ” Person [address=address 1, age=28, name=mkyong1], ” does not get repeated with every piece of data ?

    Reply
  5. Is it not possible that ” Person [address=address 1, age=28, name=mkyong1], ” does not get repeated with every piece of data ?

    Reply
  6. NEED TO ADD in CLASS PERSON:

    @Override
    public String toString() {
    return “Person [name=” + name + “, address=” + address + “, age=” + age+ “]”;
    }

    Reply
  7. Put it in your Person class

    @Override
    public String toString() {
    return “Person [address=” + address + “, age=” + age + “, name=” + name + “]”;
    }
    }

    Reply
  8. Hi, MKyong which implementation uses spring in Collection???

    Reply
  9. Hi Team,
    I am confused on this property name thing.I am new to Springs.
    In Java a list is not in the key-value format but here Property name is also associated with value..i.e. may be the value at an index in the say arraylist.

    My Requirement is :
    Simply create an arraylist in springs ,using this XML technique..add some elements to it and iterate it.Please assist.

    Rahul.

    Reply
  10. Some how it does not work when i define list as:

    1

    But works when I remove .. and :

    Reply
    1. i had the same problem and it worked if i removed the able mentioned tags with the reference on the bottom.

      Reply
  11. sometimes, arguments are stored in external files, ie, .properties file, so we can import ‘util’ namespace to inject .properties file to property.

    xmlns:util=”http://www.springframework.org/schema/util”

    Reply
  12. Thanks Mkyong for explaining Spring in simple way.

    List, Set and Map are interfaces. Can you explain the implemented classes used by Spring for respected interfaces.

    Reply
  13. Nice post!

    but what if I have to share the same properties/map/list/set among more beans? I’ve to make it like a bean and use ref? How I could?

    Reply
  14. thanks to mkyong…
    i want more explantion about this please send to my mail id

    Reply
  15. Hey! I use your page all the time!

    You’d think I would eventually remember them, but they seem so random to me!

    Thanks for putting this together!

    Reply
  16. Firstly, thank you very much MKYong

    I tried your example but I got other output:

    Customer [lists=[1, com.mkyong.common.Person@4839e5b5, com.mkyong.common.Person@7b5a6029], sets=[1, com.mkyong.common.Person@4839e5b5, com.mkyong.common.Person@5117f31e], maps={Key 1=1, Key 2=com.mkyong.common.Person@4839e5b5, Key 3=com.mkyong.common.Person@6a5f6303}, pros={[email protected], [email protected]}]

    Can any body help me to get a write output?

    Reply
    1. Override default toString() method of Person class with the following code

      public String toString() {
      	return "Person [address=" + address + ", age=" + age + ", name=" + name + "]";
      }
      Reply
      1. This is the right way to convert.

        Reply
  17. Hi Yong
    This is a great service you are injecting for developers. Thanks and Admire your example of simplicity.

    Reply
    1. I tried the example but I got other output:

      Can you help me to get a right output?

      Reply
  18. Thank you MKYong. It’s really helped me to understand various ways of configuring collections.

    Reply

Leave a Comment

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