头些天弄了个使用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
}
然后实现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]
我想一定还有更简洁的方法实现properties对Map进行初始化,希望有这方面经验的朋友给我留言或者Mail我,arvin.rong@gmail.com,谢谢啦