`

Apache Commons Configuration 使用

    博客分类:
  • JAVA
 
阅读更多

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

不过,这并不是一个很新的技巧,在很早的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元

 

 

 

相信大家在很多项目中已经见过类似的功能,比如说有时候我们修改Web项目的配置文件web.xml,Tomcat会自动重新启动我们的项目。Tomcat是怎么做到的呢,其实如果使用Commons Configuration的话,简单的很,只需要在原来的基础上再添加一句代码就够了:
config.setReloadingStrategy(new FileChangedReloadingStrategy());

下面我们编写一个Web项目测试一下这个功能,当然这个功能不是只能应用于Web项目。之所以选择Web项目,个人觉得这样做相对比较简单一些。
首先,创建一个Web项目:
Project name :CommonConfigurationAutomaticReloading
Web-root folder : WebRoot
Web Context-root :/ccar
然后,参考《Apache Commons Configuration使用入门》添加必要的包到项目的lib目录下,并添加到构建路径中,并把AppConfig.xml文件拷贝到项目的WEB-INF下。
接下来添加一个Servlet:
以下是web.xml中关于Servlet的配置,
<servlet>
  <servlet-name>TestServlet</servlet-name>
  <servlet-class>servlets.TestServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>TestServlet</servlet-name>
  <url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
以下是Servlet的Java源代码,
package servlets;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

public class TestServlet extends HttpServlet {
  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    ServletContext application = this.getServletContext();
    XMLConfiguration config = (XMLConfiguration)application.getAttribute("appConfig");
    
    String btime = config.getString("应用程序配置参数.考勤时间.上班时间");
    double basicm = config.getDouble("应用程序配置参数.个人所得税起征额");
    
    System.out.println("上班时间:" + btime);
    System.out.println("个人所得税起征额:" + basicm + "元");
  }
  
  @Override
  public void init() throws ServletException {
    String path = this.getServletContext().getRealPath("/");
    String filename = path + "/WEB-INF/AppConfig.xml";
    
    try {
      XMLConfiguration config = new XMLConfiguration(filename);
      config.setReloadingStrategy(new FileChangedReloadingStrategy());
      
      System.out.println("成功加载:" + filename);
      
      ServletContext application = this.getServletContext();
      application.setAttribute("appConfig", config);
    } catch (ConfigurationException e) {
      e.printStackTrace();
    }
  }
}

最后,启动Tomcat并发布项目,控制台应该显示如下信息(类似):
成功加载:F:\jdev\apache-tomcat-6.0.14\webapps\ccar\/WEB-INF/AppConfig.xml
然后,打开浏览器,在地址栏里输入:http://localhost:8080/ccar/TestServlet并回车,控制台显示如下:

上班时间:08:00:00
个人所得税起征额:1000.0元

再修改AppConfig.xml的内容:
<个人所得税起征额>1000</个人所得税起征额> 
= 〉
<个人所得税起征额>2000</个人所得税起征额>

保存之后,控制台显示如下信息:
2007-12-26 9:09:47 org.apache.commons.configuration.AbstractFileConfiguration reload
信息: Reloading configuration. URL is file:/F:/jdev/apache-tomcat-6.0.14/webapps/ccar/WEB-INF/AppConfig.xml

回到浏览器,刷新一下,控制台显示如下:
上班时间:08:00:00
个人所得税起征额:2000.0元

分享到:
评论

相关推荐

    apache commons configuration 学习

    最后,为了使用 Apache Commons Configuration,你需要将相应的 JAR 包添加到项目的类路径中。在示例中,包括了 `commons-configuration` 以及它的依赖包 `commons-beanutils`, `commons-collections`, `commons-...

    Apache-Configuration-Demo:Apache Commons Configuration 2学习

    在实际项目中,使用 Apache Commons Configuration 2 可能包括以下步骤: 1. **引入依赖**:在 Maven 或 Gradle 项目中,你需要添加对应的依赖库,以便在项目中使用。 2. **创建配置源**:根据你的需求选择合适的...

    apache commons configuration api_zh

    apache configuration api_zh

    commons-configuration2-2.1.1-API文档-中文版.zip

    Maven坐标:org.apache.commons:commons-configuration2:2.1.1; 标签:apache、commons、configuration2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    apache commons jar(commons所有的jar包,从官网下载提供给大家)

    apache-sanselan-incubating-0.97-bin bcel-5.2 commons-beanutils-1.9.2-bin commons-chain-1.2-bin commons-cli-1.3.1-bin commons-codec-1.10-bin commons-collections4-4.0-bin commons-configuration-1.10-bin...

    org.apache.commons.configuration.XMLConfiguration的读取范例

    Apache Commons Configuration 是一个Java库,它提供了一组高级配置接口和类,用于处理应用程序的配置文件。在这些接口中,`XMLConfiguration` 是一个重要的组件,专门设计用来处理XML格式的配置文件。在这个范例中...

    Apache的Commons-configuration自动加载特性

    Apache Commons Configuration 是一个开源的Java库,用于处理配置文件。这个库提供了一种灵活的方式来管理和访问应用程序的配置参数,无论是从传统的属性文件、XML文件、系统属性还是其他数据源。在"Apache的Commons...

    apache-commons-configuration-1.9-8.el7.noarch (1).rpm

    离线安装包,测试可用

    Configuration对properties、xml配置文件的【增删改查】及动态加载

    在`configurationDemo`文件中,可能包含了一个简单的Java应用,该应用展示了如何使用Apache Commons Configuration库进行配置文件的【增删改查】操作以及动态加载。通过运行这个案例,我们可以更直观地理解这些功能...

    加载配置文件的方式(java[Properties,InputStream]与apache-commons-configuration组件)

    本篇文章将深入探讨两种加载配置文件的方法——使用Java内置的`Properties`类和`InputStream`,以及第三方库Apache Commons Configuration。我们将讨论每种方法的优缺点,并通过实例来演示如何使用它们。 首先,让...

    官方commons-configuration-1.10的jar包

    Apache Commons Configuration 是一个Java库,专门用于处理配置文件和提供灵活的访问机制。这个库的主要目标是简化在Java应用程序中管理配置参数的过程。在给定的"commons-configuration-1.10"版本中,我们可以深入...

    Apache Commons API.rar

    这个"Apache Commons API.rar"压缩包包含五个关键的Apache Commons子项目的API文档,分别是BeanUtils、Lang、Configuration、Logging和Collections。让我们逐一深入了解一下这些API及其提供的功能。 1. **Apache ...

    commons-configuration2-2.0.jar

    commons-configuration2-2.0.jar Apache commons-configuration 读取配置文件

    org.apache.commons jar

    8. **Apache Commons Configuration**: 提供了灵活的配置文件处理,可以读取 XML、INI、系统属性等多种格式的配置文件。 9. **Apache Commons JCI**: 用于Java编译器接口,可以帮助你在运行时动态编译 Java 代码。 ...

    commons-configuration代码实例

    通过使用 Apache Commons Configuration,开发者可以轻松地处理各种配置文件,提高代码的可维护性和灵活性。学习并熟练掌握这个库对于编写健壮、易于管理的 Java 应用程序至关重要。在实际项目中,你可以根据需求...

    Apache commons API(整套全版)

    Commons-beanutils-API Commons-collections-API Commons-configuration-API Commons-lang-API Commons-logging-API Dom4j_API java api javascript Struts API J2EE API

    commons-configuration-1.10.jar

    《Apache Commons Configuration详解》 Apache Commons Configuration 是一个用于处理配置文件的开源库,主要应用于...在实际开发中,熟练掌握Apache Commons Configuration的使用,能大大提高开发效率和代码质量。

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    Apache Commons Configuration/FileUpload

    博文链接:https://log-cd.iteye.com/blog/211727

Global site tag (gtag.js) - Google Analytics