1

Apache CommonsからMultiKeyMapに出くわしましたが、ダブルキーマップが必要なため、通常のマップを使用する代わりに、SpringフレームワークでMultiKeyMapを使用することに興味があります。SpringフレームワークでMultiKeyMapを使用する方法を知っている人はいますか?

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は ではない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てマップを注入できなかったことにも注意してください。JSR-250 の注釈を使用する必要がありました。<util:map>@Autowired@Resource

于 2011-05-03T22:23:49.740 に答える