`

Commons Configuration 学习

阅读更多

注释:此文档属于原英文帮助文档翻译,可能有些不准确或遗漏

一、介绍

     我们可以使用Commons Configuration 访问在属性文件和XML文件在存储的内容。Commons Configuration 是为了提供对属性文件、XML文件、JNDI资源、来自JDBC Datasource数据的访问。Commons Configuration 允许我们建立一个分等级的多级配置,在这种多级的配置中,local configuration可以选择性的覆盖默认配置。

二、解析属性配置文件

     使用org.apache.commons.configuration包中的PropertiesConfiguration类装载一个属性文件后,可以提供对于number、arrays、list的访问,下面的例子包括了3个属性,speed 是一个浮点数NUMBER,name是一个用逗号分隔的字符列表,Correct是一个布尔类型。

 

speed=23.332

names=Bob,Gautam,Jarret,Stefan

correct=false

    这个名字为test.properties的属性文件存储在一个应用的工作目录中,现在需要以上面说过的float, List, and boolean方式访问3个属性,以面的代码建了一个PropertiesConfiguration对象,可以访问每个属性。

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.PropertiesConfiguration;

Configuration config = new PropertiesConfiguration( "test.properties" );
 

float speed = config.getFloat("speed"));

List names = config.getList("names"));

boolean correct = config.getBoolean("correct");

 

 

 

 

给PropertiesConfiguration构造方法传递的字符串参数指明了属性文件的位置。PropertiesConfiguration比J2SE提供的Properties类有些改进。

 

三、解析XML配置文件

XML配置文件内容: 

<engine-config>

    <start-criteria>

        <criteria type="critical">

            Temperature Above -10 Celsius

        </criteria>

        <criteria>

            Fuel tank is not empty

        </criteria>

    </start-criteria>

    <name>

        <first>Tom</first>

        <last>Payne</last>

    </name>

    <horsepower>42</horsepower>

</engine-config>

 

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

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.DOMConfiguration;



String resource = "com/discursive/jccook/configuration/global.xml";

Configuration config = new DOMConfiguration(resource);

        

// Retrieve a list of all Criteria elements

List startCriteria = config.getList("start-criteria.criteria");



// Retrieve the value of the first criteria element

String firstCriteria = config.getString("start-criteria.criteria(0)");



// Retrieve the type attribute of the first criteria element

String firstCriteriaType = config.getString("start-criteria.criteria(0)[@type]");



// Retrieve the horsepower as an int

int horsepower = config.getInt("horsepower");

 

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

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

 

四、形成复合的配置

     源码中的解释:属性配置文件根据出现的定义顺序,可以形成覆盖关系。

     你的应用要求一个多层的配置(其实是就是多个配置文件,可以选择用那套配置),这样一些默认的属性能被用户定义的或者本地的配置选择性的覆盖。

     建立一个configuration.xml文件,这个文件包含了多个属性文件,把这个文件传给ConfigurationFactory. 这个ConfigurationFactory可以返回一个Configuration实现,这个实现包括了多个属性文件的配置参数。

  下图是一个包括3层的属性配置文件。

 

 

   有3个文件来存储不同的配置文件:Example 7-2 (global.properties), Example 7-3 (local.properties), and Example 7-4

Example 7-2. global. properties
threads.max=50

threads.min=2

timeout=15.52

interactive=true

color=red

speed=50

name=Default User


Example 7-3. local .properties
# Overrides Global Props

threads.max=30

speed=55


Example 7-4. user. properties
# Overrides Local Props

threads.min=1

color=black

speed=5000

name=Sean

  configuration.xml文件提供了一个配置为ConfigurationFactory,这个文件做为一个资源被存储在类路径中,这个资源的路径用ConfigurationFactory类的setConfigurationURL()方法设置。下面的这个configuration.xml将产生一个Configuration对象,它将会按照XML文件定义的顺序装载属性文件中的属性,如下面的例子:user.properties覆盖local.properties,local.properties 覆盖gloabal.properties.

<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>

    <properties fileName="user.properties"/>

    <properties fileName="local.properties"/>

    <properties fileName="global.properties"/>

</configuration>

 

import org.apache.commons.configuration.Configuration;

import org.apache.commons.configuration.ConfigurationFactory;



// Configure Factory 

ConfigurationFactory factory = new ConfigurationFactory( );

URL configURL = this.getClass( ).getResource("configuration.xml");

factory.setConfigurationURL( configURL );



Configuration config = factory.getConfiguration( );



// Print out properties

System.out.println( "Timeout: " + config.getFloat("timeout"));

System.out.println( "Max Threads: " + config.getString("threads.max"));

System.out.println( "Name: " + config.getString("name"));

System.out.println( "Speed: " + config.getInt("speed"));

 上面的代码传递一个configuration.xml资源的URL给ConfigurationFactory,返回一个Configuration实例,它将解析应用配置参数按照上面提到的规则。

    输出结果如下:

Timeout: 15.52

Max Threads: 30

Name: Sean

Speed: 75


A configuration.xml file can also instruct a ConfigurationFactory to use a mixture of properties files and XML documents. The following configuration.xml instructs the ConfigurationFactory to create a Configuration instance that looks for properties from a properties file and an XML document:

 

<?xml version="1.0" encoding="ISO-8859-1" ?>



<configuration>

    <properties fileName="test.properties"/>

    <dom4j fileName="test.xml"/>

</configuration>

 

  • 大小: 18.9 KB
分享到:
评论
3 楼 yzz9i 2014-04-11  
 
2 楼 whhit2011 2014-01-23  
学习下
1 楼 JavaLuSir 2012-12-06  

相关推荐

    commons-configuration代码实例

    Apache Commons Configuration 是一个 Java 库,它为处理各种类型的配置文件和提供了一种灵活的 API。这个库使得在 Java 应用程序中读取、写入和管理配置参数变得非常简单。下面我们将深入探讨 Commons ...

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

    Apache Commons Configuration 是一个流行的 Java 库,用于处理应用程序的配置设置。这个库为开发者提供了灵活的方式来管理和读取配置数据,可以是从文件、系统属性、环境变量或是其他来源获取。Apache Commons ...

    commons-configuration

    - `commons-configuration-1.9-src.zip` 则包含了项目的源代码,对于开发者来说,这是查看和学习源码、调试或进行定制开发的重要资源。 使用这些库文件,开发者可以快速集成Commons Configuration到Java项目中,...

    Apache的Commons-configuration自动加载特性

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

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

    Apache Commons Configuration库提供了一个强大的工具集,用于处理各种类型的配置文件,包括properties和XML格式。这个库使得在运行时对配置进行【增删改查】操作变得简单,同时支持动态加载,从而实现配置的实时...

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

    - **Apache Commons Configuration**:提供更强大的配置处理能力,支持多种格式,可以处理嵌套结构和动态配置,但学习曲线较陡峭,引入额外的依赖。 4. **最佳实践** 对于小型项目或简单配置需求,使用Java内置...

    Jakarta+Commons+学习

    10. **Configurations**: Commons Configuration 提供了一种灵活的方式来处理配置文件,支持多种格式(如 XML、Properties、INI 等),并且提供了监听机制,可以在配置文件变化时自动更新。 Jakarta Commons 的这些...

    commons包的用法

    import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationBuilder; import org.apache.commons.configuration.ConfigurationException; import org.apache....

    apache-commons的所有API

    Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了许多实用的 Java 类库,旨在简化常见的编程任务。...学习和掌握 Apache Commons 中的各个组件,对于提升 Java 开发者的生产力非常有帮助。

    apache-commons源代码、api、jar包

    7. **Commons Configuration**: 用于读取和管理配置文件,支持多种格式如XML、INI,方便在应用程序中管理配置参数。 8. **Commons CSV**: 提供CSV(逗号分隔值)文件的解析和生成,遵循RFC 4180标准。 9. **...

    commonconfigruationdemo

    总之,"commonconfigruationdemo"项目是一个学习和演示如何使用Apache Commons Configuration库读取和管理配置文件的实例,对于任何处理配置的Java项目都是有价值的参考。通过这个项目,开发者可以深入了解配置文件...

    jakarta commons-API

    `Commons-configuration-1.3-API.chm`涵盖了如何加载、解析和管理这些配置信息的API,使得在程序中动态读取和修改配置变得容易。 3. **Commons Lang**: Commons Lang提供了一些Java语言核心类的补充,包括字符串...

    一部分jar包主要是commons打头的

    9. **Apache Commons Configuration**: 为应用程序提供灵活的配置管理,支持多种格式的配置文件(如XML、Properties、INI等)。 10. **Apache Commons Logging**: 是一个轻量级的日志抽象层,允许开发者选择不同的...

    Pro.Jakarta.Commons.rar

    10. **Commons Configuration**:提供了一种灵活的方式来管理应用程序的配置,支持多种配置源,如XML、Properties、系统环境变量等。 Jakarta Commons的这些组件遵循模块化设计,可以单独使用,也可以组合使用以...

    commons.zip

    8. **Commons Configuration**: 提供了一种灵活的配置机制,可以读取多种类型的配置文件,如XML、INI、属性文件等。 9. **Commons Math**: 提供基础数学和统计计算,适合需要进行科学计算的项目。 10. **Commons ...

    Jakarta Commons Cookbook(CHM)

    7. **Configurations**: Commons Configuration 提供了一种灵活的方式来处理配置文件,支持多种格式如XML、INI、Properties等。这使得配置管理变得更加方便。 8. **Codec**: Commons Codec 提供了各种编码解码器,...

    commons系列jar

    10. **Apache Commons Configuration**: 提供了一种灵活的方式来管理配置文件,支持 XML、属性文件等多种格式,便于应用的配置管理和动态更新。 11. **Apache Commons Email**: 用于发送电子邮件的库,简化了 ...

    Apache Commons书籍

    通过阅读"Apache Commons书籍.chm",你可以深入了解这些模块的用法,学习如何在自己的Java项目中有效地利用Apache Commons库,提高代码的可读性和可维护性。这本书籍可能还会涵盖最佳实践、示例代码和常见问题解答,...

    apache common api(chm)

    3. **Apache Commons Configuration**: 这是一个用于读取和管理配置数据的库。它可以处理多种类型的配置源,如XML、属性文件、系统属性、环境变量等。Configuration API 提供了一种灵活的方式来访问和更新应用程序...

Global site tag (gtag.js) - Google Analytics