【问题标题】:How to use MultiKeyMap from Apache in Spring Framework如何在 Spring Framework 中使用 Apache 的 MultiKeyMap
【发布时间】:2011-05-03 19:46:16
【问题描述】:

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

【问题讨论】:

  • 你是什么意思,“使用”?

标签: java spring apache-commons-collection


【解决方案1】:

我没有检查,但我猜对 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>

&lt;map&gt; 元素生成的地图不是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 实例?

还请注意,我可以使用 @Autowired 注释将 MultiKeyMap 创建为 bean,但我无法使用 @Autowired 注释注入映射 &lt;util:map&gt;。我不得不使用来自 JSR-250 的 @Resource 注释。

【讨论】:

  • 感谢您的建议。在 标签中,我们如何定义两个键?你能帮忙吗?
  • 我不知道比显式构造 MultiKey 类的 bean 作为键更短的方法,如答案的第一个代码片段所示。
猜你喜欢
  • 2013-11-14
  • 1970-01-01
  • 2016-05-24
  • 2018-02-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
相关资源
最近更新 更多