import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
import org.apache.commons.configuration.reloading.ReloadingStrategy;
import org.apache.commons.configuration2.CompositeConfiguration;
import org.apache.commons.configuration2.XMLConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine;
import java.util.List;
/**
* 自定义读取配置文件
* Created by qijunhuang on 2017/7/20.
*/
public enum ConfigSingleton {
INSTANCE;
public CompositeConfiguration getConfig(String coreStr, String listkey) {
//读总配置文件
try {
Configurations configs = new Configurations();
XMLConfiguration config = configs.xml(coreStr);
if (config == null) {
return null;
}
CompositeConfiguration readConfigs=new CompositeConfiguration();
// ReloadingStrategy strategy = new FileChangedReloadingStrategy();
// readConfigs.setReloadingStrategy(strategy);
List<String> paths = config.getList(String.class, listkey);
if(paths==null||paths.size()<=0)
{
return readConfigs;
}
for(String fileName:paths) {
String fileType = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
switch (fileType)
{
case "xml":
XMLConfiguration xmlc=configs.xml(fileName);
readConfigs.addConfiguration(xmlc,true);
break;
case "xpath":
XMLConfiguration xmlxpath=configs.xml(fileName);
xmlxpath.setExpressionEngine(new XPathExpressionEngine());
readConfigs.addConfiguration(xmlxpath,true);
break;
case "properties":
readConfigs.addConfiguration(configs.properties(fileName),true);
break;
}
}
return readConfigs;
} catch (Exception ex) {
return null;
}
}
}
这只是读多个配置文件,其功能及优化请自行研究