项目开发过程中不免有许多在运行过程中需要经常改动的参数,比如说数据库的连接参数等。把这些需要经常改动的参数保存在配置文件中,让用户可以修改,这样既增强了项目的适应能力,也减少了我们的维护成本。这种做法不失为一个很好选择。
不过,这并不是一个很新的技巧,在很早的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,你需要将相应的 JAR 包添加到项目的类路径中。在示例中,包括了 `commons-configuration` 以及它的依赖包 `commons-beanutils`, `commons-collections`, `commons-...
在实际项目中,使用 Apache Commons Configuration 2 可能包括以下步骤: 1. **引入依赖**:在 Maven 或 Gradle 项目中,你需要添加对应的依赖库,以便在项目中使用。 2. **创建配置源**:根据你的需求选择合适的...
apache configuration api_zh
Maven坐标:org.apache.commons:commons-configuration2:2.1.1; 标签:apache、commons、configuration2、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
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...
Apache Commons Configuration 是一个Java库,它提供了一组高级配置接口和类,用于处理应用程序的配置文件。在这些接口中,`XMLConfiguration` 是一个重要的组件,专门设计用来处理XML格式的配置文件。在这个范例中...
Apache Commons Configuration 是一个开源的Java库,用于处理配置文件。这个库提供了一种灵活的方式来管理和访问应用程序的配置参数,无论是从传统的属性文件、XML文件、系统属性还是其他数据源。在"Apache的Commons...
离线安装包,测试可用
在`configurationDemo`文件中,可能包含了一个简单的Java应用,该应用展示了如何使用Apache Commons Configuration库进行配置文件的【增删改查】操作以及动态加载。通过运行这个案例,我们可以更直观地理解这些功能...
本篇文章将深入探讨两种加载配置文件的方法——使用Java内置的`Properties`类和`InputStream`,以及第三方库Apache Commons Configuration。我们将讨论每种方法的优缺点,并通过实例来演示如何使用它们。 首先,让...
Apache Commons Configuration 是一个Java库,专门用于处理配置文件和提供灵活的访问机制。这个库的主要目标是简化在Java应用程序中管理配置参数的过程。在给定的"commons-configuration-1.10"版本中,我们可以深入...
这个"Apache Commons API.rar"压缩包包含五个关键的Apache Commons子项目的API文档,分别是BeanUtils、Lang、Configuration、Logging和Collections。让我们逐一深入了解一下这些API及其提供的功能。 1. **Apache ...
commons-configuration2-2.0.jar Apache commons-configuration 读取配置文件
8. **Apache Commons Configuration**: 提供了灵活的配置文件处理,可以读取 XML、INI、系统属性等多种格式的配置文件。 9. **Apache Commons JCI**: 用于Java编译器接口,可以帮助你在运行时动态编译 Java 代码。 ...
通过使用 Apache Commons Configuration,开发者可以轻松地处理各种配置文件,提高代码的可维护性和灵活性。学习并熟练掌握这个库对于编写健壮、易于管理的 Java 应用程序至关重要。在实际项目中,你可以根据需求...
Commons-beanutils-API Commons-collections-API Commons-configuration-API Commons-lang-API Commons-logging-API Dom4j_API java api javascript Struts API J2EE API
《Apache Commons Configuration详解》 Apache Commons Configuration 是一个用于处理配置文件的开源库,主要应用于...在实际开发中,熟练掌握Apache Commons Configuration的使用,能大大提高开发效率和代码质量。
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...
博文链接:https://log-cd.iteye.com/blog/211727