In this article, we show you how to use Spring EL to get value from Map
and List
. Actually, the way of SpEL works with Map
and List
is exactly same with Java. See example :
//get map whete key = 'MapA' @Value("#{testBean.map['MapA']}") private String mapA; //get first value from list, list is 0-based. @Value("#{testBean.list[0]}") private String list;
Spring EL in Annotation
Here, created a HashMap
and ArrayList
, with some initial data for testing.
package com.mkyong.core;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component("customerBean")public class Customer { @Value("#{testBean.map['MapA']}") private String mapA; @Value("#{testBean.list[0]}") private String list; public String getMapA() { return mapA; } public void setMapA(String mapA) { this.mapA = mapA; } public String getList() { return list; } public void setList(String list) { this.list = list; } @Override public String toString() { return "Customer [mapA=" + mapA + ", list=" + list + "]"; }}
package com.mkyong.core;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.springframework.stereotype.Component;@Component("testBean")public class Test { private Mapmap; private List list; public Test() { map = new HashMap (); map.put("MapA", "This is A"); map.put("MapB", "This is B"); map.put("MapC", "This is C"); list = new ArrayList (); list.add("List0"); list.add("List1"); list.add("List2"); } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public List getList() { return list; } public void setList(List list) { this.list = list; }}
Run it
Customer obj = (Customer) context.getBean("customerBean"); System.out.println(obj);
Output
Customer [mapA=This is A, list=List0]
Spring EL in XML
See equivalent version in bean definition XML file.