注释:此文档属于原英文帮助文档翻译,可能有些不准确或遗漏
一、介绍
我们可以使用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
分享到:
相关推荐
Apache Commons Configuration 是一个 Java 库,它为处理各种类型的配置文件和提供了一种灵活的 API。这个库使得在 Java 应用程序中读取、写入和管理配置参数变得非常简单。下面我们将深入探讨 Commons ...
Apache Commons Configuration 是一个流行的 Java 库,用于处理应用程序的配置设置。这个库为开发者提供了灵活的方式来管理和读取配置数据,可以是从文件、系统属性、环境变量或是其他来源获取。Apache Commons ...
- `commons-configuration-1.9-src.zip` 则包含了项目的源代码,对于开发者来说,这是查看和学习源码、调试或进行定制开发的重要资源。 使用这些库文件,开发者可以快速集成Commons Configuration到Java项目中,...
Apache Commons Configuration 是一个开源的Java库,用于处理配置文件。这个库提供了一种灵活的方式来管理和访问应用程序的配置参数,无论是从传统的属性文件、XML文件、系统属性还是其他数据源。在"Apache的Commons...
Apache Commons Configuration库提供了一个强大的工具集,用于处理各种类型的配置文件,包括properties和XML格式。这个库使得在运行时对配置进行【增删改查】操作变得简单,同时支持动态加载,从而实现配置的实时...
- **Apache Commons Configuration**:提供更强大的配置处理能力,支持多种格式,可以处理嵌套结构和动态配置,但学习曲线较陡峭,引入额外的依赖。 4. **最佳实践** 对于小型项目或简单配置需求,使用Java内置...
10. **Configurations**: Commons Configuration 提供了一种灵活的方式来处理配置文件,支持多种格式(如 XML、Properties、INI 等),并且提供了监听机制,可以在配置文件变化时自动更新。 Jakarta Commons 的这些...
import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationBuilder; import org.apache.commons.configuration.ConfigurationException; import org.apache....
Apache Commons 是一个由 Apache 软件基金会维护的开源项目集合,它提供了许多实用的 Java 类库,旨在简化常见的编程任务。...学习和掌握 Apache Commons 中的各个组件,对于提升 Java 开发者的生产力非常有帮助。
7. **Commons Configuration**: 用于读取和管理配置文件,支持多种格式如XML、INI,方便在应用程序中管理配置参数。 8. **Commons CSV**: 提供CSV(逗号分隔值)文件的解析和生成,遵循RFC 4180标准。 9. **...
总之,"commonconfigruationdemo"项目是一个学习和演示如何使用Apache Commons Configuration库读取和管理配置文件的实例,对于任何处理配置的Java项目都是有价值的参考。通过这个项目,开发者可以深入了解配置文件...
`Commons-configuration-1.3-API.chm`涵盖了如何加载、解析和管理这些配置信息的API,使得在程序中动态读取和修改配置变得容易。 3. **Commons Lang**: Commons Lang提供了一些Java语言核心类的补充,包括字符串...
9. **Apache Commons Configuration**: 为应用程序提供灵活的配置管理,支持多种格式的配置文件(如XML、Properties、INI等)。 10. **Apache Commons Logging**: 是一个轻量级的日志抽象层,允许开发者选择不同的...
10. **Commons Configuration**:提供了一种灵活的方式来管理应用程序的配置,支持多种配置源,如XML、Properties、系统环境变量等。 Jakarta Commons的这些组件遵循模块化设计,可以单独使用,也可以组合使用以...
8. **Commons Configuration**: 提供了一种灵活的配置机制,可以读取多种类型的配置文件,如XML、INI、属性文件等。 9. **Commons Math**: 提供基础数学和统计计算,适合需要进行科学计算的项目。 10. **Commons ...
7. **Configurations**: Commons Configuration 提供了一种灵活的方式来处理配置文件,支持多种格式如XML、INI、Properties等。这使得配置管理变得更加方便。 8. **Codec**: Commons Codec 提供了各种编码解码器,...
10. **Apache Commons Configuration**: 提供了一种灵活的方式来管理配置文件,支持 XML、属性文件等多种格式,便于应用的配置管理和动态更新。 11. **Apache Commons Email**: 用于发送电子邮件的库,简化了 ...
通过阅读"Apache Commons书籍.chm",你可以深入了解这些模块的用法,学习如何在自己的Java项目中有效地利用Apache Commons库,提高代码的可读性和可维护性。这本书籍可能还会涵盖最佳实践、示例代码和常见问题解答,...
3. **Apache Commons Configuration**: 这是一个用于读取和管理配置数据的库。它可以处理多种类型的配置源,如XML、属性文件、系统属性、环境变量等。Configuration API 提供了一种灵活的方式来访问和更新应用程序...