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

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

Apache Commons Configuration使用入门相关推荐

  1. 使用Apache Commons Configuration读取配置信息

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache ...

  2. intellij中出現java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration解決方案

    完整报错如下: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 19/03/06 19: ...

  3. 『Java CVE』CVE-2022-33980: Apache Commons Configuration 读文件RCE

    文章目录 影响版本 漏洞原理(机翻自CVE页面) 漏洞复现 环境配置 jdk版本 pom.xml 基本使用demo PoC 代码审计 对生产环境的影响 漏洞修复 参考 完 影响版本 Apache Co ...

  4. [转]Apache Commons IO入门教程

    Apache Commons IO是Apache基金会创建并维护的Java函数库.它提供了许多类使得开发者的常见任务变得简单,同时减少重复(boiler-plate)代码,这些代码可能遍布于每个独立的 ...

  5. Commons Configuration 学习

    注释:此文档属于原英文帮助文档翻译,可能有些不准确或遗漏 一.介绍 我们可以使用Commons Configuration 访问在属性文件和XML文件在存储的内容.Commons Configurat ...

  6. Apache Commons DbUtils 入门

    一.概述 DbUtils小巧的Java数据库操作工具,它在JDBC的基础上做了科学的封装,旨在简化JDBC代码混乱与重复. 对于JDBC代码,存在很多问题,算是对Java的批判: 1.操作过程复杂,代 ...

  7. java Apache Commons jar包简介

    一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI 说明 ...

  8. 编写更少量的代码:使用apache commons工具类库

    Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCo ...

  9. Apache Commons 工具集使用简介

    为什么80%的码农都做不了架构师?>>>    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.我选了一些比较常用的项目做简单介绍. ...

最新文章

  1. [转载]web集群时利用memcache来同步session
  2. jenkins 命令找不到
  3. 批量选中删除(包含全选)---jsp,servlet
  4. TensorFlow(二)函数基础
  5. C++(STL):13--- list插入和访问元素
  6. java 数组 截取_Java成长孵化园---认识java(day09)
  7. 测试类报错:空指针异常
  8. 避免sql注入的方法
  9. PHP 发送谷歌邮箱
  10. 群晖NAS教程(二十三)、利用Docker安装mysql8,并使用ipv6和域名访问
  11. ClickHouse压缩率
  12. 两种常见的周期性特征,时序必知强特
  13. 【懒人福利】自动记录操作步骤
  14. vue3结合ts开发,导入vue文件,页面报红色的波浪线
  15. 借助gdb调试glibc代码学习House of Orange
  16. 考虑题4所示的日志记录_福建省厦门双十中学2016届高三上学期中考试地理【解析】...
  17. 第4章第11节:图表:使用柱形图表制作学生成绩表 [PowerPoint精美幻灯片实战教程]
  18. 苹果市场占有率_苹果耳机销售速度超手机,占据TWS耳机半壁江山
  19. 基于单片机智能安全服药提醒药盒系统设计(毕设资料)
  20. 公众号榜单 | 2020·4月公众号原创排行榜重磅发布

热门文章

  1. Django的静态资源
  2. iOS11适配tableView顶部空白
  3. 2017.4.20实验三:4、定义一个带有默认值参数的函数,通过传递不同个数的参数值,调用该函数。...
  4. poj 1469 COURSES 解题报告
  5. P4213 【模板】杜教筛
  6. sgu 126 Boxes
  7. Python 动态添加类方法
  8. 关于input file img实时预览获取文件路径的问题
  9. Gartner最新发布:2017年十大战略技术趋势
  10. php select socket