我从 Apache Commons 遇到了 MultiKeyMap,并且有兴趣在 Spring 框架中使用它而不是使用常规映射,因为我需要双键映射。Dpes 有人知道如何将 MultiKeyMap 与 Spring 框架一起使用吗?
问问题
2252 次
1 回答
0
我没有检查,但我猜对MultiKeyMap
不是内置 Spring 的支持。
您需要将实例构造为与普通接口方法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<map>
不是 a 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
创建的内容作为 bean注入@Autowired
,但无法<util:map>
使用@Autowired
注解注入映射。我不得不使用@Resource
来自 JSR-250 的注释。
于 2011-05-03T22:23:49.740 回答