我从Apache Commons遇到了MultiKeyMap,并且有兴趣在Spring框架中使用它而不是使用常规地图,因为我需要双键映射。 Dpes任何人都知道如何在Spring框架中使用MultiKeyMap?
答案 0 :(得分: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>
元素生成的地图不是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
。我不得不使用JSR-250中的@Resource
注释。