2011-05-03 282 views
1

我遇到了Apache Commons的MultiKeyMap,並且有興趣在Spring框架中使用它,而不是使用常規映射,因爲我需要雙鍵映射。任何人都知道如何在Spring框架中使用MultiKeyMap?如何在Spring框架中使用Apache中的MultiKeyMap

+0

你是什麼意思,「一起使用」? – skaffman 2011-05-03 20:55:51

回答

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>元素生成的地圖是不是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。

使用彈簧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註解的bean創建MultiKeyMap,但使用@Autowired註解我不能注入地圖<util:map>。我不得不使用JSR-250的@Resource註釋。

+0

謝謝你的建議。在標籤中,我們如何定義兩個鍵?你能幫忙嗎? – JUG 2011-05-05 19:11:39

+0

我不知道比明確構造類MultiKey作爲鍵的bean更短的方法,如答案的第一個代碼片段所示。 – 2011-05-05 20:01:46