`

Apache 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,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<项目配置>  
  <应用程序配置参数>
    <考勤时间>
      <上班时间>08:00:00</上班时间>
      <下班时间>17:00:00</下班时间>
      <迟到矿工时间分界点>08:30:00</迟到矿工时间分界点>
    </考勤时间>
    <加班费>30</加班费>
    <满勤奖>35</满勤奖>
    <个人所得税起征额>1000</个人所得税起征额>
  </应用程序配置参数>
</项目配置>
然后再创建一个测试类:
package org.xdf.learn.conf;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;

public class Test {

/**
 * @param args
 */
  public static void main(String[] args) {
    String file = "AppConfig.xml";
    try {
      XMLConfiguration config = new XMLConfiguration(file);
      System.out.println("成功加载:" + file);
      String btime = config.getString("应用程序配置参数.考勤时间.上班时间");
      double basicm = config.getDouble("应用程序配置参数.个人所得税起征额");
      
      System.out.println("上班时间:" + btime);
      System.out.println("个人所得税起征额:" + basicm + "元");
    } catch (ConfigurationException e) {
      e.printStackTrace();
    }
  }
}

以下是测试结果:
成功加载:AppConfig.xml
上班时间:08:00:00
个人所得税起征额:1000.0元

分享到:
评论
6 楼 aaaaaaaaabaas 2014-11-09  
谢谢,对我有帮助
5 楼 luweiwei 2012-03-09  
还不错!!~~~
4 楼 surpass_li 2011-10-15  
不错,很好的组件,了解了,谢谢
3 楼 zhangyou1010 2009-10-16  
飘过,不过感觉简单了点。谢谢了。
2 楼 xiejc 2009-10-14  
很好!!!!
1 楼 xiaomogui 2008-06-23  
不错!!

相关推荐

Global site tag (gtag.js) - Google Analytics