项目开发过程中不免有许多在运行过程中需要经常改动的参数,比如说数据库的连接参数等。把这些需要经常改动的参数保存在配置文件中,让用户可以修改,这样既增强了项目的适应能力,也减少了我们的维护成本。这种做法不失为一个很好选择。
不过,这并不是一个很新的技巧,在很早的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
username = lavasoft
password = leizhimin
例子:
<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);
}
}
Process finished with exit code 0