Master Spring & Java Development!
Subscribe to Ram N Java for clean, beginner-friendly coding guides!
🔔 Subscribe to Ram N JavaOverview: Concrete Map Collections with util:map in Spring
In the Spring Framework, managing collections inside XML configuration can sometimes become verbose when using standard bean definitions. The Spring util schema offers concise, dedicated XML tags to declare collection beans directly. With the <util:map> element, you can easily instantiate concrete map implementations such as java.util.HashMap or java.util.TreeMap as standalone beans.
In this guide, you will learn how to declare concrete Map collection beans using the util:map namespace, configure their implementation classes, and inject them cleanly into your Spring beans.
Why Use <util:map> in Spring?
The util:map tag simplifies collection bean configuration with several benefits:
-
Clean & Concise XML: Eliminates boilerplate
MapFactoryBeandeclarations by providing a dedicated, expressive schema element. -
Concrete Class Customization: Use the
map-classattribute to specify concrete collection types such asjava.util.HashMap,java.util.LinkedHashMap, orjava.util.TreeMap. -
Standalone Reusable Bean: Defines a map bean with its own
id, allowing it to be shared and injected across multiple collaborating beans. -
Sorting & Ordering: Specifying
java.util.TreeMapguarantees that keys are kept in their natural sorted order.
Step-by-Step Configuration
-
Declare the Util Namespace: Add the
utilschema definition to your Spring XML configuration:
xmlns:util="http://www.springframework.org/schema/util" -
Define the Map with util:map: Set the desired concrete class via
map-classand add key-value entries:
<util:map id="countryCapitals" map-class="java.util.TreeMap">
<entry key="India" value="New Delhi"/>
<entry key="USA" value="Washington D.C."/>
</util:map> -
Inject the Map into Target Bean: Reference the map bean in your target bean definition:
<bean id="countryService" class="com.example.CountryService">
<property name="capitals" ref="countryCapitals"/>
</bean>
Recommended Next Videos from Ram N Java
Click here to watch on Youtube:
https://www.youtube.com/watch?v=agCpoM0pC4U&list=UUhwKlOVR041tngjerWxVccw
Click the below Image to Enlarge:
![]() |
| How to create a concrete Map collection class (HashMap and TreeMap) using util:map in Spring |
![]() |
| How to create a concrete Map collection class (HashMap and TreeMap) using util:map in Spring |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0%20http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ram.core</groupId>
<artifactId>SpringDemo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringDemo</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring 5 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
FruitShop.java
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class FruitShop
{
private String shopName;
private Map<Integer, String> mapOfAvailableFruits;
public String getShopName()
{
return shopName;
}
public void setShopName(String shopName)
{
this.shopName = shopName;
}
public Map<Integer, String> getMapOfAvailableFruits()
{
return mapOfAvailableFruits;
}
public void setMapOfAvailableFruits(
Map<Integer, String> mapOfAvailableFruits)
{
this.mapOfAvailableFruits = mapOfAvailableFruits;
}
public void displayFruitShopInfo()
{
System.out.println("FruitShop [shopName=" + shopName
+ ", mapOfAvailableFruits=" + mapOfAvailableFruits + "]");
System.out.println("Fruit ShopName = " + shopName);
Set<Entry<Integer, String>> set = mapOfAvailableFruits.entrySet();
Iterator<Entry<Integer, String>> itr = set.iterator();
while (itr.hasNext())
{
Entry<Integer, String> entry = itr.next();
System.out.println("Fruit Id = " + entry.getKey()
+ ", Fruit Name = " + entry.getValue());
}
}
}
applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<bean id="fruitShop" class="com.ram.core.FruitShop">
<property name="shopName" value="Fruit Mart"></property>
<property name="mapOfAvailableFruits">
<util:map map-class="java.util.HashMap">
<entry key="1" value="Apple"></entry>
<entry key="2" value="Grapes"></entry>
</util:map>
</property>
</bean>
</beans>
App.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
System.out.println("---------------------------------------");
FruitShop fruitShop = (FruitShop) context.getBean("fruitShop");
System.out.println(
"Got fruitShop object from the ApplicationContext(Spring Container)");
fruitShop.displayFruitShopInfo();
}
}
Output
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5b37e0d2: startup date [Mon Jul 30 09:46:08 IST 2018]; root of context hierarchy
Jul 30, 2018 9:46:08 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
---------------------------------------
Got fruitShop object from the ApplicationContext(Spring Container)
FruitShop [shopName=Fruit Mart, mapOfAvailableFruits={1=Apple, 2=Grapes}]
Fruit ShopName = Fruit Mart
Fruit Id = 1, Fruit Name = Apple
Fruit Id = 2, Fruit Name = Grapes
Click the below link to download the code:
https://sites.google.com/site/ramj2eev2/java_basics/SpringDemo_util_map.zip?attredirects=0&d=1
Github Link:
https://github.com/ramram43210/javaee/tree/master/Spring_2018/SpringDemo_util_map
Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/463ef0439e374e3884b06b8ead881ecf3ac4364f/Spring_2018/SpringDemo_util_map/?at=master
See also:

