Как ввести карту <String, List> в java springs?
Как вставить карту в java spring framework?
Если возможно, укажите пример кода.
Является ли следующий законным?
<property name="testMap">
<map>
<entry>
<key>
<value>test</value>
</key>
<value>
<list>
<value>String</value>
<value>String</value>
</list>
</value>
</entry>
</map>
</property>
Ответы
Ответ 1
Определите карту, подобную этой первой, внутри вашего applicationContext.xml
:
<util:list id="list1">
<value>[email protected]</value>
<value>[email protected]</value>
</util:list>
<util:list id="list2">
<value>[email protected]</value>
<value>[email protected]</value>
</util:list>
<util:map id="emailMap" value-type="java.util.List">
<!-- Map between String key and List -->
<entry key="entry1" value-ref="list1" />
<entry key="entry2" value-ref="list2" />
...
</util:map>
Затем используйте эту Карту в любом bean вашего типа:
<bean id="myBean" class="com.sample.beans">
<property name="emailMap" ref="emailMap" />
</bean>
Ответ 2
Я думаю, что ваш синтаксис не является законным как spring throws org.xml.sax.SAXParseException
при обработке конфигурации bean xml.
Он должен работать после удаления тега <value>
вокруг <list>
.
<property name="testMap">
<map>
<entry>
<key>
<value>test</value>
</key>
<list>
<value>String</value>
<value>String</value>
</list>
</entry>
</map>
</property>
Ответ 3
Это мой пример:
<bean class="com.common.handlermgmnt.HandlerMapAdder">
<constructor-arg index="0" type="java.util.Map">
<map key-type="java.lang.String" value-type="com.common.ViewWidget">
<entry key="DefaultView">
<bean class="com.common.DefaultViewWidget"/>
</entry>
<entry key="AnotherView">
<bean class="com.common.AnotherViewWidget"/>
</entry>
</map>
</constructor-arg>
<constructor-arg index="1" type="com.common.handlermgmnt.HandlerManager" ref="widget_handlerManager"/>
</bean>
Ответ 4
Просто наткнулся на это дело. Если нет необходимости повторно использовать значения списка как независимые beans в других местах, вы можете использовать эту более короткую версию, не используя 'value-ref':
<util:map id="mymap">
<entry key="key1">
<util:list>
<value>val1</value>
<value>val2</value>
</util:list>
</entry>
<entry key="key2">
<util:list>
<value>val2</value>
<value>val3</value>
<value>val4</value>
</util:list>
</entry>
</util:map>
И подключите его в своем Java-коде следующим образом:
@Resource(name="mymap")
Map<String, List<String>> mapKey_List;
Ответ 5
Внесите его с помощью SpEL. #{Я бы}. это работает для меня.
в .xml:
<util:map id="roleLocationMap">
<entry key="ROLE_ADMIN" value-ref="listA" />
<entry key="ROLE_USER" value-ref="listB" />
</util:map>
в .java
@Autowired
public MainController(
@Value("#{roleLocationMap}") final Map<String, List<String>> roleLocationMap) {
this.roleLocationMap = roleLocationMap;
}