Как использовать MultiKeyMap из Apache в Spring Framework
Я сталкивался с MultiKeyMap от Apache Commons и заинтересован в использовании его в среде Spring вместо использования регулярных карт, так как мне нужна карта двойных ключей. Dpes кто-нибудь знает, как использовать MultiKeyMap с Spring Framework?
1 ответ
Я не проверял, но я думаю, что поддержка MultiKeyMap
не встроенная весна.
Вам нужно будет построить MultiKey
экземпляры в качестве ключей, которые будут использоваться с нормальным Map
методы интерфейса. Самый явный способ будет выглядеть так:
<map>
<entry>
<key><bean class="org.apache.commons.collections.keyvalue.MultiKey">
<constructor-arg index="0"><ref bean="KEY_0_REF"/></constructor-arg>
<constructor-arg index="1"><value>KEY_1_VALUE</value></constructor-arg>
</bean></key>
<value>YOUR_VALUE</value>
</entry>
</map>
Карта, подготовленная <map>
элемент не является MultiKeyMap
так что вам нужно создать это самостоятельно:
<bean id="yourMultiKeyMap" class="org.apache.commons.collections.map.MultiKeyMap">
<constructor-arg>
<bean class="org.apache.commons.collections.map.HashedMap">
<constructor-arg>
<map>YOUR_MULTI-KEY_VALUE_PAIRS</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
Он работает (протестировал его с Spring 3.0.5), но это очень много XML для написания.
Используя пространство имен spring-util, вы можете уменьшить часть создания карты до этого:
<beans xmlns:util="http://www.springframework.org/schema/util" ...>
...
<util:map id="yourMultiKeyMap" map-class="org.apache.commons.collections.map.MultiKeyMap">
<entry>
...
</entry>
</u:map>
...
</beans>
Есть ли более короткий способ создать MultiKey
случаи?
Также обратите внимание, что я мог бы ввести MultiKeyMap
создан как боб с использованием @Autowired
аннотации, но я не мог ввести карту <util:map>
с использованием @Autowired
аннотаций. Я должен был использовать @Resource
аннотация от JSR-250.