使用commons configuration管理配置文件

来源:互联网 发布:floyd warshall java 编辑:程序博客网 时间:2024/04/28 11:13

Commons Configuration是一个java应用程序的配置管理类库。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运 行的基础环境。在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。

官方主页:http://commons.apache.org/configuration/

它目前支持的配置文件格式有:

Properties files 
XML documents 
Windows INI files 
Property list files (plist) 
JNDI 
JDBC Datasource 
System properties 
Applet parameters 
Servlet parameters

我使用的是目前最新版本1.9,以调用 Properties格式的文件为例,使用方法如下:

基本用法:

1.加载jar包,我使用maven自动加载,pom.xml配置如下:

<dependency><groupId>commons-configuration</groupId><artifactId>commons-configuration</artifactId><version>1.9</version></dependency><!-- commons-configuration 自动加载的是2.1的版本,编译时会报错,所以再加上这个 --><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>

common-lang这个包要用新版的,如果不写这个依赖,commons-configuration会下载一个2.1旧版,导致编译出错



2.java代码:

PropertiesConfiguration config = new PropertiesConfiguration(“/database.properties”);String userName = config.getString("name");

除了getString()方法外,还有getBoolean,getDouble,getInteger等不同返回类型的方法可以调用。


进阶用法:

一个项目有会有多个配置文件,这时有个统一的配置文件管理类就很有必要了,我写了一个简单的,大家可以参考下,有不妥的用法也请指出来

1.java类

package com.xxx.xxx.util;import java.util.HashMap;import java.util.Map;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.PropertiesConfiguration;/** * <p> * 读取配置文件类 * </p> * <p> * 根据配置文件名和属性key返回属性内容,configUtil.get(configFile, property); * </p> * @author shengzhi.rensz * */public class configUtil {private static configUtil initor = new configUtil();           private static Map<String, Object> configMap = new HashMap<String, Object>();        private configUtil() {}        /**     * 获取内容     * @param configFile     * @param property     * @return     */    public static String get(String configFile, String property) {       if(!configMap.containsKey(configFile)) {              initor.initConfig(configFile);        }    PropertiesConfiguration config = (PropertiesConfiguration) configMap.get(configFile);    String value = config.getString(property);    //TODO LOG        return value;       }           /**     * 载入配置文件,初始化后加入map     * @param configFile     */    private synchronized void initConfig(String configFile) {            try {        PropertiesConfiguration config = new PropertiesConfiguration(configFile);configMap.put(configFile, config);} catch (ConfigurationException e) {e.printStackTrace();}    }   }

2.调用方法

configUtil.get("/common/velocity.properties", "input.encoding");


0 0
原创粉丝点击