commons configuration的简单使用和说明

Commons Configuration是一个java应用程序的配置管理工具。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。

官方主页:[url]http://commons.apache.org/configuration/[/url]

1 如果要使用configuration这个包,首先要保证使用JDK1.2以上,还要引入如下jar包

  • commons-beanutils
  • commons-lang
  • commons-logging
  • commons-collections
  • commons-digester
  • commons-codec
  • commons-jxpath

2 commons-configuration最新的版本是1.5,最主要的作用是读取资源文件,每一种文件格式都有一个对应的类,如下

  • properties文件--PropertiesConfiguration类
  • xml文件--XMLConfiguration
  • .ini文件--INIConfiguration
  • .plist文件--PropertyListConfiguration
  • 还可以从JNDI中读取properties--JNDIConfiguration
  • 当然还可以使用system的properties--SystemConfiguration
  • 等等...

资源下载地址:http://archive.apache.org/dist/commons/

一、读取property文件demo

package cfgtest; import org.apache.commons.configuration.*; 

/** 
* Commons Configuration读取属性文件的例子 

* @author leizhimin 2008-9-23 9:40:17 
*/ 
public class Test1 { 
        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("cfgtest/test1.properties")); 
       
                String usernaem = config.getString("username"); 
                String password = config.getString("password"); 
                 
                System.out.println(usernaem + " " + password);


}

cfgtest/test1.properties

username = lavasoft 
password = leizhimin

运行结果:

lavasoft leizhimin 
Process finished with exit code 0

比如我们要读一个properties文件:在classpath下面建立目录te,之后在te下面建立 
test.properties

Java代码  

  1. ip=127.0.0.1
  2. port=8080
  3. id=111
  4. application.name = Killer App
  5. application.version = 1.6.2
  6. application.title = ${application.name} ${application.version}
  7. keys=cn,com,org,uk,edu,jp,hk

java:

Java代码  

  1. //注意路径默认指向的是classpath的根目录
  2. Configuration config = new PropertiesConfiguration("te/test.properties");
  3. String ip=config.getString("ip");
  4. int port=config.getInt("port");
  5. String title=config.getString("application.title");
  6. //再举个Configuration的比较实用的方法吧,在读取配置文件的时候有可能这个键值对应的值为空,那么在下面这个方法中
  7. //你就可以为它设置默认值。比如下面这个例子就会在test.properties这个文件中找id的值,如果找不到就会给id设置值为123
  8. //这样就保证了java的包装类不会返回空值。虽然功能很简单,但是很方便很实用。
  9. Integer id=config.getInteger("id", new Integer(123));
  10. //如果在properties 文件中有如下属性keys=cn,com,org,uk,edu,jp,hk
  11. //可以实用下面的方式读取:
  12. String[] keys1=config.getStringArray("keys");
  13. List keys2=config.getList("keys");

首先要把这个文件读到程序中,我们可以用上面的类,所有的读取文件的类都 继承自AbstractConfiguration类, 
而这个类实现了Configuration接口,如果我们只有比较简单的需求,那么可以直接向上转型为Configuration类型,如果向上 
转型为AbstractConfiguration类,那么可以做一些配置工作。 
比如刚刚看到的 keys=cn,com,org,uk,edu,jp,hk这个例子中如果是keys=cn/com/org/uk/edu/jp/hk 
那么如果还按照原来的方式读取,读到的将是"cn/com/org/uk/edu/jp/hk"这个字符串,所以要先改变分割符之后在读 

Java代码  

  1. AbstractConfiguration.setDefaultListDelimiter(‘/‘);
  2. Configuration config = new PropertiesConfiguration("te/Vasp.properties");
  3. String[] keys=config.getStringArray("keys");
  4. List key2=config.getList("keys");

如果你看它的源码,你会在 AbstractConfiguration这个类中找到:

Java代码  

  1. private static char defaultListDelimiter = ‘,‘;

这下你明白了吧!

三、解析XML配置文件

XML配置文件内容:

Xml代码  

  1. <engine-config>
  2. <start-criteria>
  3. <criteria type="critical">
  4. Temperature Above -10 Celsius
  5. </criteria>
  6. <criteria>
  7. Fuel tank is not empty
  8. </criteria>
  9. </start-criteria>
  10. <name>
  11. <first>Tom</first>
  12. <last>Payne</last>
  13. </name>
  14. <horsepower>42</horsepower>
  15. </engine-config>

这个XML配置文件的内容可以被commons 提供的的的DOMConfiguration类加载, DOMConfiguration类使用Xerces XML 解析器把全部的XML文件解析为DOM 文件,,可以参照下面的实现:

Java代码  

  1. import org.apache.commons.configuration.Configuration;
  2. import org.apache.commons.configuration.DOMConfiguration;
  3. String resource = "com/discursive/jccook/configuration/global.xml";
  4. Configuration config = new DOMConfiguration(resource);
  5. // Retrieve a list of all Criteria elements
  6. List startCriteria = config.getList("start-criteria.criteria");
  7. // Retrieve the value of the first criteria element
  8. String firstCriteria = config.getString("start-criteria.criteria(0)");
  9. // Retrieve the type attribute of the first criteria element
  10. String firstCriteriaType = config.getString("start-criteria.criteria(0)[@type]");
  11. // Retrieve the horsepower as an int
  12. int horsepower = config.getInt("horsepower");

传一个字符串作为DOMConfiguration 构造方法的参数,DOMConfiguration从类路径中装这载XML文件作为一种资源,如果你需要从file对象中装载XML配置文件,你可以传File object.

DOMConfiguration仅在Xerves XML parser有用的时候(即在类编译路径中有相关类)时可用,如果没有这个JAR包,我们可以利用XMLConfiguration另外的实现类:DOM4JConfiguration,这两种方法使用DOM4J来解析XML文件,当然,这时你需要配置DOM4J的包。

时间: 2024-10-06 18:35:14

commons configuration的简单使用和说明的相关文章

Apache Commons Configuration之一简介

1    简介 Commons Configuration软件类库提供通用配置接口,使Java应用程序从多种源读取配置文件.Commons Configuration提供简单类型访问和通过以下代码演示的多义配置参数: Double double = config.getDouble("number"); Integer integer = config.getInteger("number"); 配置参数可以从以下源加载: Properties文件 XML文档 Pr

Commons Configuration之二基本特性和AbstractConfiguration

Configuration接口定义一大堆方法.一切从头开始实现这些方法非常困难.因为AbstractConfiguration类存在.该类在Commons Configuration中充当大多数Configuration实现的共同基类并提供了接口需要的大量功能.因此创建一个自定义Configuration实现该类将是一个很好的起点.除了基本实现声明在Configuration接口中的方法之外,AbstractConfiguration类提供一些其它的便利特性.因为该类是在Commons Conf

使用Apache Commons Configuration读取配置信息

在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache Commons Configuration framework. 你会了解到 ·从XML文件中获取数据 ·访问环境变量 ·连接不同类型的配置信息(基于XML的,基于环境变量的,等等) ·在程序改变后自动重新加载配置. 在我们的示例中将会使用XML文件和环境变量的两种方式存储一个数据库的配置信息(开发.测试.产品,等等).接下来你将会看到具体的内容,但是首先先配置一下Ma

Apache Commons Configuration之三Properties文件

Properties文件是流行的应用程序配置文件.当然,Commons Configuration支持这种格式并显著增强了基础的java.util.Properties类.本文介绍PropertiesConfiguration类的特性.注意PropertiesConfiguration是实现Configuration接口非常典型的例子,本文描述许多特性(例如,list处理或插值)其它配置类也支持.这是因为Commons Configuration附带的大多数配置实现派生自实现这些特性的共同基类A

apache commons 之 commons-configuration

Apache commons configuration简介和简单代码 Apache commons configuration最新的版本是2.0alpha,为了安全起见,我们用的是1.1正式版本,最主要的作用是读取资源文件,每一种文件格式都有一个对应的类,如下 : ·        Properties files ·        XML documents ·        Windows INI files ·        Property list files (plist) ·  

Apache commons CLI介绍和简单应用

CLI 即Command Line Interface,也就是"命令行接口",它为Java 程序访问和解析命令行参数提供了一种统一的接口. apache Commons CLI为用户提供了一个解释命令行的API. 它在解释命令行时主要有三个状态,即:定义.解释和询问交互. 通过使用commons cli则可以很容易的访问参数,而不必去循环String[] args. 这个命令需要模拟命令行输入,可以将应用做成jar文件后输入命令行执行,也可以将命令行包装成参数执行. 在eclipse下

Apache Commons 工具集

一.Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 使用示例:功能有很多,网站上有详细介绍.一个比较常用的功能是Bean Copy,也就是copy bean的属性.如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value O

Apache Commons

官方链接走起 http://commons.apache.org/ Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.我选了一些比较常用的项目做简单介绍.文中用了很多网上现成的东西,我只是做了一个汇总整理. Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils

Apache Commons 工具集使用简介

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.我选了一些比较常用的项目做简单介绍.文中用了很多网上现成的东西,我只是做了一个汇总整理. 一.Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 使用示例:功能有很多,网站上有详细