2012-10-02 37 views
1

我希望在我的spring.xml中創建一個地圖。我能得到的最接近的是列表在Spring Expressions中創建一個地圖

<bean id="transformerHelper" class="com.common.TransformerHelper"> 
    <property name="srcSystemIDList" value="{T(java.util.Arrays).asList({'11','50'},{'41','50'}) }" /> 
</bean> 

但是我真的需要在一個地圖這些值,其中搜索鍵11或41.我需要在Spring中定義元數據,因爲它會時,我可以返回50名單遠離應用程序存儲。的this doc

回答

0

有一種方法,我建議到另一個屬性添加到您的類,一個字符串,將持有的所有地圖值(鍵和值),像你已經有:

{'11','50'},{'41','50'},{'12','34'} 

然後,而不是注入地圖,注入字符串並在它的setter方法中(如果使用setter注入)調用一個小方法(由您創建)來解析該字符串並填充地圖,請使用StringTokenizer或任何您喜歡的方法。

+0

最終完成類似於此的操作。由於元素都是數字,我將它們存儲在一個數組中,並編寫了一個類似於StringTokenizer的方法,將這些值轉換爲一個鍵控映射。 – Will

2

見A.2.2.5節,並注意這個例子:

<util:map id="emails"> 
    <entry key="pechorin" value="[email protected]"/> 
    <entry key="raskolnikov" value="[email protected]"/> 
    <entry key="stavrogin" value="[email protected]"/> 
    <entry key="porfiry" value="[email protected]"/> 
</util:map> 
+0

可能在一個班輪中完成它,否則它將意味着元數據可變地獄 – Will

+0

如果你真的想要在一行中不用連接XML來完成它,你可能必須想出一些地圖序列化格式化你自己,然後編寫一個類來解析它。我認爲試圖將這些東西壓縮到一行中會混淆配置信息 –