1

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

4

1 回答 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 回答