如何在Spring Framework中使用Apache的MultiKeyMap

时间:2011-05-03 19:46:16

标签: java spring apache-commons-collection

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

1 个答案:

答案 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注释。