Как использовать MultiKeyMap из Apache в Spring Framework

Я сталкивался с MultiKeyMap от Apache Commons и заинтересован в использовании его в среде Spring вместо использования регулярных карт, так как мне нужна карта двойных ключей. Dpes кто-нибудь знает, как использовать MultiKeyMap с Spring Framework?

1 ответ

Я не проверял, но я думаю, что поддержка MultiKeyMap не встроенная весна.

Вам нужно будет построить 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 создан как боб с использованием @Autowired аннотации, но я не мог ввести карту <util:map> с использованием @Autowired аннотаций. Я должен был использовать @Resource аннотация от JSR-250.

Другие вопросы по тегам