动态加载属性文件

动态加载属性文件例子:

 

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

你可能感兴趣的:(apache,xml)