Apache-common 包之 common-configuration 笔记

来源:互联网 发布:软件开发招标评分标准 编辑:程序博客网 时间:2024/04/29 21:39

configuration-logo

 

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

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


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

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

 

3、上面已经对它做了基本的介绍,下面看看这个包怎么用吧
比如我们要读一个properties文件:在classpath下面建立目录te,之后在te下面建立 test.properties

 

  

首先要把这个文件读到程序中,我们可以用上面的类,所有的读取文件的类都 继承自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"这个字符串,所以要先改变分割符之后在读

 


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



如果你确定要解析的文件是properties ,那么你完全可以使用

 来代替


这么写似乎不符合面向接口编程,但是它可以使用PropertiseConfiguration中特殊的方法。
比如,你如果你想修改propertise文件,那么可以这样:

 

当然,你还可以使用isAutoSave这个方法:

 

properties这个类还支持文件的继承,比如在 test.properties 这个文件中有


同时在classpath中又有test1.properties这个文件,那么PropertiesConfiguration类就可以
从test1.properties文件中读取信息。

读取XML
假如有个XML,名叫:XMLtest.xml如下:


标准的XML文件都会有一个跟标签包裹住所有内容,这个标签的子标签认为是顶级名字空间
(这个说法可能不准确)不多说了看代码吧

但是显示的是 
我们想要的是

如果看过之前的文章就会知道,我们有一些设置没有设
也就是我们要禁用List分隔符delimiter.在AbstractionConfiguration
这个类中(XMLConfiguration的父类)有这个setDelimiterParsingDisabled方法可以
禁用分隔符。但是要在读取XML文件之前设置这个属性。所以代码改为

这就可以了。


再来个更加复杂一点的XML

这个XML的结构是根节点为database

眼尖的一眼就能看穿这是一个数据库的定义文件,那么我们如何读取呢?
好吧,我们接上文,来看看吧

前面的我就不说了,看看这句

config读取属性的时候,会去看得到的是否是多个值,如果是,则把这些值存为一个Collection
对象。 所以会打印出
在使用getProperty方法时,我们给不同的节点路径会给我们不同的值,直接看例子:

 

 

备注:

本文转载自:http://wangxin0072000.javaeye.com/blog/186009

                  http://h819.javaeye.com/blog/293372

 

原创粉丝点击