动态加载属性文件例子:
java应用:
package com.zzt.application;
import java.io.File;
import org.apache.commons.configuration.CombinedConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class ConfigReader {
private static final String FILE_NAME = "/config.xml";
public static final Log log = LogFactory.getLog(ConfigReader.class);
public static CombinedConfiguration config;
private ConfigReader() {
}
static {
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
builder.setFile(new File(FILE_NAME));
try {
config = builder.getConfiguration(true);
} catch (ConfigurationException e) {
log.error("read config file unsuccessfully!", e);
}
}
public static String getProperty(String configName, String key, String defaultValue) {
return config.getConfiguration(configName).getString(key, defaultValue);
}
public static String[] getPropertyAsArray(String configName, String key) {
return config.getConfiguration(configName).getStringArray(key);
}
}
config.xml:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <header> <result delimiterParsingDisabled="true" forceReloadCheck="true"> <expressionEngine config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine" /> </result> </header> <override> <properties fileName="main.properties" throwExceptionOnMissing="true" config-name="main" config-optional="true"> <reloadingStrategy refreshDelay="30000" config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy" /> </properties> </override> </configuration>
调用:
String xx= ConfigReader.getProperty("main", "xxx", "x");
需要引入的包:
commons-configuration-1.6.jar
commons-logging.jar
commons-lang.jar
commons-collections.jar
commons-beanutils.jar
commons-jxpath-1.3.jar