java - 如何在 Spring 框架中使用 Apache 的 MultiKeyMap

标签 java spring apache-commons-collection

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

最佳答案

我没有检查,但我猜支持MultiKeyMap没有内置 Spring。

您需要构建 MultiKey实例作为与普通 Map 一起使用的键接口(interface)方法。最明确的方式是这样的:

<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> 制作元素不是 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实例?

另请注意,我可以注入(inject) MultiKeyMap使用@Autowired创建为bean注释,但我无法注入(inject) map <util:map>使用@Autowired注解。我不得不使用@Resource来自 JSR-250 的注释。

关于java - 如何在 Spring 框架中使用 Apache 的 MultiKeyMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874833/

相关文章:

java - 从 2D JSON 对象读取数据

mac 10.5 上的 java.lang.NoClassDefFoundError

java - Spring Boot 测试不使用 jmx 属性

Java Commons Collections removeAll

java - JTable增量单元格填充

c# - 图论算法

java - 使用 spring 配置 Apache Ignite mongo

javascript - 为什么我在 AngularJS 工厂中使用 .then() 没有得到正确的响应/错误?

Java 组合列表

java - apache-commons collectionutils 源代码