我从 Apache Commons 遇到了 MultiKeyMap,并且有兴趣在 Spring 框架中使用它,而不是使用常规映射,因为我需要双键映射。 Dpes 有人知道如何在 Spring 框架中使用 MultiKeyMap 吗?
最佳答案
我没有检查,但我猜支持MultiKeyMap
没有内置 Spring。
您需要构建 MultiKey
实例作为与普通 Map
一起使用的键接口(interface)方法。最明确的方式是这样的:
<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 由 <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
实例?
另请注意,我可以注入(inject) MultiKeyMap
使用@Autowired
创建为bean注释,但我无法注入(inject) map <util:map>
使用@Autowired
注解。我不得不使用@Resource
来自 JSR-250 的注释。
关于java - 如何在 Spring 框架中使用 Apache 的 MultiKeyMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874833/