View RSS Feed

Spring Framework

Wiring Sets, Maps and Properties in Spring

Rate this Entry
by , 11-16-2011 at 04:19 PM (4921 Views)
Similarly to lists, there are times when you will need to map to other types of collections. In this tip, I will outline what you need to do to wire sets, maps and properties. The key to remember is that you want to wire your bean to the same type that is being used in the class definition. So if your bean has a java.util.Set property to guarantee uniqueness in the collection, you want to use the same definition in the xml definition.

So for example, if you want to use a java.util.Set, then you use the <set> element in your definition. It is used exactly as it is with a list or array:

Java Code:
<property name=”carEntertainmentSet”>
   <set>
        <value>DVD Player</value>
        <ref bean=” carEntertainment”/>
   </set>
</property>
Notice that you use <set> exactly the way you would use <list>. The only difference is in how it is wired to a bean property. Where <list> wires values to a java.util.List or an array, <set> wires values to a java.util.Set.

If you want to use java.util.Map collections in Spring, this time you use the <map> element. Note that in contrast to Lists or Sets, each entry in the Map is made up of a key and a value pairs. This is defined by the <entry> element:

Java Code:
<property name=”carSeatCoverMap”>
<map>
   <entry key=”blue”>
	<ref bean=”seatCover1”/>
   </entry>
   <entry key=”beige”>
	<ref bean=”seatCover2”/>
   </entry>
</map>
</property>
Here we have a map being wired into the Spring configuration. The value of a map <entry>, is a valid property element. Note that although in this case we are using a reference to an object (<ref>, it is equally valid to use <value>, <list>, or even another <map>. The first part of wiring an <entry>, involves providing the key attribute of type String. This is a minor limitation over the full functionality of java.util.Map, which allows any object to be the key of a map entry. However, this limitation doesn’t often present a problem, as Maps are typically keyed with Strings.

Finally if you want to wire properties using a java.util.Properties collection you must wire it with the <props> element. Each element of a properties collection is wired with the <prop> element.

Java Code:
<property name="specifications"> 
   <props>
	<prop key="/viewCarDetails.htm">viewCarDetailController</prop>
   </props>
</property>
Note that although it has similarities with the map element, property entry values always map to a String.
So there is little need to use the <value> element to differentiate between String values and non-String values. Properties are frequently used for URL mapping especially with Spring Model/View/Controller (MVC) framework as shown above.

Submit "Wiring Sets, Maps and Properties in Spring" to Facebook Submit "Wiring Sets, Maps and Properties in Spring" to Digg Submit "Wiring Sets, Maps and Properties in Spring" to del.icio.us Submit "Wiring Sets, Maps and Properties in Spring" to StumbleUpon Submit "Wiring Sets, Maps and Properties in Spring" to Google

Comments