Commons Configuration使用



Commons Configuration使用

项目开发过程中不免有许多在运行过程中需要经常改动的参数,比如说数据库的连接参数等。把这些需要经常改动的参数保存在配置文件中,让用户可以修改,这样既增强了项目的适应能力,也减少了我们的维护成本。这种做法不失为一个很好选择。

不过,这并不是一个很新的技巧,在很早的Windows版本中就有大量的INI文件,还有功能更加强大的注册表。在课堂上我们已经学习了把 Oracle的配置参数保存在属性文件(.properties)中,在运行的过程中读取使用,使用也比较简单,只需要查看一下Sun的JDK帮助文档, 找到Properties类,使用该类的load()方法加载.properties文件,并用里面提供的getProperties(key)方法读取 属性值就可以了。

但是使用properties文件也有它的不足之处,另外一种选择就是把配置参数保存在XML文件中,使用Apache 提供的Commons Configuration进行读取。Configuration可以操作如下类型的文件:
Properties files
XML documents
Windows INI files
Property list files (plist)
JNDI
JDBC Datasource
System properties
Applet parameters
Servlet parameters
今天就给大家举个用Apache Commons Configuration读取XML文件的例子,首先到http://apache.org下载Commons Configuration的jar包,最新版本是commons-configuration-1.5.jar并且还需要同时下载:
commons-lang-2.3.jar
commons-collections-3.2.jar
commons-logging-1.1.1.jar
这三个包是必须的,我下载的都是最新版本,版本不统一可能会出现问题,可以自己试验一下.我用的开发工具是Eclipse3.2。
使用Eclipse创建一个JAVA项目,在项目的根目录下创建一个AppConfig.xml,内容如下:

cfgtest/test1.properties

[html] view plaincopy在CODE上查看代码片派生到我的代码片
username = lavasoft
password = leizhimin

例子:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
<pre name=”code” class=”java”>package config;

import org.apache.commons.configuration.*;

/**
* Commons Configuration读取属性文件的例子
*
*/
public class ConfigTest {
public static void main(String[] args) throws ConfigurationException {
test1();
}


public static void test1() throws ConfigurationException {

CompositeConfiguration config = new CompositeConfiguration();
//config.addConfiguration(new SystemConfiguration());
config.addConfiguration(new PropertiesConfiguration(“config/test1.properties”));

String username = config.getString(“username”);
String password = config.getString(“password”);

System.out.println(username + ” ” + password);

}
}

运行结果:
lavasoft leizhimin

Process finished with exit code 0
从上面看出,使用Apache Commons Configuration来读取配置确实很简单,还可以省很多事情。它不光可以读取properties文件,还可以读取xml,还可以读取xml和properties混合文件等等。