2011-07-28 18 views
2

文件I有一個這樣的類:從屬性提供的值自動佈線從屬性多個陣列與Spring

class MyClass { 
    Map<String, String[]> arrays; 
    public void setArrays(Map<String, String[]> arrays) 
    { 
     this.arrays = arrays; 
    } 
    public String[] getArray(String key) 
    { 
     return arrays.get(key); 
    } 
}  

文件是這樣的:

# my.properties 
arrays.arrayOne=a,b,c 
arrays.arrayTwo=d,e,f 

使用彈簧我可以接線屬性這樣:

<property name="arrays"> 
    <map> 
     <entry key="arrayOne" value="${arrays.arrayOne}"/> 
     <entry key="arrayTwo" value="${arrays.arrayTwo}"/> 
    </map> 
</property> 

現在,這個工程,但我必須手動編輯佈線每tim e我在屬性文件中添加一個新條目。有一個更好的方法嗎?

+0

有人需要輸入數據... –

回答

5

我使用PropertyOverrideConfigurer解決我的問題:

<!-- applicationContext.xml --> 
<bean id="myBean" class="com.myapp.MyClass"> 
    <property name="arrays"> 
     <map/> 
    </property> 
</bean> 

<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"> 
    <property name="location" value="classpath:my.properties"/> 
</bean> 

(我也直接初始化地圖在我的課,使代碼更簡潔)

# my.properties 
myBean.arrays[arrayOne]=a,b,c 
myBean.arrays[arrayTwo]=d,e,f 

這一切都需要和春季正確填充地圖,添加到屬性文件更新沒有進一步的配置。在我的bean上調用getArray(「arrayOne」)會返回一個字符串數組{{「a」,「b」,「c」}。