Spring學習筆記 通過PropertyPlaceholderConfigurer來使用properties文件初始化Map類型屬性 – JAVA編程語言程序開發技術文章

頭些天弄瞭個使用properties文件初始化bean屬性的測試,在這兩天工作時正好需要將部分配置提取到properties文件中的情況,但是其中一個屬性為Map類型,上網搜瞭很久也沒搜到類似初始化Map的方法,在找到初始化Map方法前,為瞭使系統可以繼續使用,臨時使用瞭添加init方法的辦法來對Map進行手工初始化工作。如下:

首先使帶有Map屬性的類實現InitializingBean接口。

代碼片段:

[java]
public class SsoMailConfigImpl implements InitializingBean, SsoMailConfig 

    private String userDomainMapInit; // 通過properties將Map通過類似形式格式化存入userDomainMapInit 0:mail.com.cn | 1:test.com.cn 
    private Map<String, String> userDomainMap; //通過afterPropertiesSet()方法將userDomainMapInit數據初始化到Map中 

然後實現InitializingBean中的afterPropertiesSet()方法
代碼:

[java]
public void afterPropertiesSet() throws Exception 
   { 
       userDomainMap = new HashMap<String, String>(); 
       String[] userDomainArr = userDomainMapInit.split("\\|"); 
       String[] tempKeyValue; 
       for (String userDomainEntry : userDomainArr) 
       { 
           tempKeyValue = userDomainEntry.split(":"); 
           if (tempKeyValue.length == 2) 
           { 
               userDomainMap.put(tempKeyValue[0].trim(), tempKeyValue[1].trim()); 
           } 
       } 
   } 

由於默認Spring容器使用Singleton模式創建Bean所以,這個初始化隻會執行一次。這樣可以對Map屬性執行手動初始化操作。

spring配置文件代碼片段:

[html] 
<bean id="propertyFileForMailConfig" 
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
        <property name="location"> 
            <value>ssomailconfig.properties</value> 
        </property> 
    </bean> 
 
    <bean id="emailConfig" class="com.neusoft.education.dcp.apps.sso.SsoMailConfigImpl"> 
       <property name="userDomainMapInit" value='${USER_DOMAIN_MAP_INIT}' /> 
    </bean> 

 我想一定還有更簡潔的方法實現properties對Map進行初始化,希望有這方面經驗的朋友給我留言或者Mail我,arvin.rong@gmail.com,謝謝啦

 

發佈留言