2011-05-03 275 views
1

我遇到了Apache Commons的MultiKeyMap,并且有兴趣在Spring框架中使用它,而不是使用常规映射,因为我需要双键映射。任何人都知道如何在Spring框架中使用MultiKeyMap?如何在Spring框架中使用Apache中的MultiKeyMap

+0

你是什么意思,“一起使用”? – skaffman 2011-05-03 20:55:51

回答

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。

使用弹簧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实例?

另外请注意,我可以作为注射用@Autowired注解的bean创建MultiKeyMap,但使用@Autowired注解我不能注入地图<util:map>。我不得不使用JSR-250的@Resource注释。

+0

谢谢你的建议。在标签中,我们如何定义两个键?你能帮忙吗? – JUG 2011-05-05 19:11:39

+0

我不知道比明确构造类MultiKey作为键的bean更短的方法,如答案的第一个代码片段所示。 – 2011-05-05 20:01:46