properties文件读取,使用spring内置方法
阅读引导:
1、properties文件的读取,使用spring提供的内置方法。
2、对于基本功能的实现,一定要相信,业务早就有简单、美的实现!
3、为自己工作,为自己的系统工作,做自己的老板,形成正循环:打磨当前工作的核心关键能力——>高效能工作——>更多时间打磨自己的系统——>更高效能工作——>打磨下个层次工作的核心关键能力……
4、核心竞争力,是指你拥有的(独特的)知识经验组合,经过你思维逻辑的组织梳理,在实践中产生无可替代的价值。打造自己的TMS系统(T:专业技术;M:沟通管理、S:行业解决方案),利用复利效应,让系统为自己工作。
properties文件,在开发中经常用来存储一些key-value形式的配置参数。
经常看到开发人员自己去写了文件读取,然后解析到concurrenthashmap中去。
但是,这种造轮子的事情,有必要自己实现么?
Spring源码——PropertiesLoaderSupport
Spring本身提供了PropertiesLoaderSupport类,提供了properties文件的读取,有兴趣的读者可以去看一下源码。这里只探讨使用:
很简单的一个思路,我们去应用这个实现,可以看到需要指定properties文件所在的path,参数类型是Resources:this.setLocations(PropertyUtils.getResources(path));
public abstract class AbstractProperties extends PropertiesLoaderSupport implements InitializingBean{
private String path = "classpath:**/*.properties";
private static Properties mergedProps;
/* (non-Javadoc)
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
*/
@Override
public void afterPropertiesSet() throws Exception {
this.setLocations(PropertyUtils.getResources(path));
mergedProps = mergeProperties();
}
public String getValue(String key) {
return mergedProps.getProperty(key);
}
/**
* 子类需要实现的方法,指定properties配置文件路径
* @param path 例如:classpath:*.properties
*/
public abstract void setPath(String path);
}
将properties文件解析为Resource
Spring也提供了对于指定路径的properties文件解析为resource的内部处理方法PropertyUtils.java类中:
/**
* 获取path路径下的全部资源
* @param path
* @return
* @throws Exception
*/
public static Resource[] getResources(String path) throws Exception {
ResourcePatternResolver loader=new PathMatchingResourcePatternResolver();
Resource[] resources=loader.getResources(path);
return resources;
}
使用程序框架的优秀实践
如果使用spring的话,就直接使用其内部优秀的实践就好了,不要自己重复造轮子。