Spring学习笔记 通过PropertyPlaceholderConfigurer来使用properties文件初始化Map类型属性

2014-11-24 09:26:36 · 作者: · 浏览: 1

头些天弄了个使用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 userDomainMap; //通过afterPropertiesSet()方法将userDomainMapInit数据初始化到Map中
}

然后实现InitializingBean中的afterPropertiesSet()方法
代码:


[java]
public void afterPropertiesSet() throws Exception
{
userDomainMap = new HashMap();
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]
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

ssomailconfig.properties





我想一定还有更简洁的方法实现properties对Map进行初始化,希望有这方面经验的朋友给我留言或者Mail我,arvin.rong@gmail.com,谢谢啦