Jakarta-Common-Configuration使用笔记

这是一个读取配置文件的工具包。

下载地址 : http://commons.apache.org/configuration/

A.读取XML配置文件:

   10.10.1.1   jini   jakarta99        admin     manager     user  

测试代码:

package demo;import java.util.List;import org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.XMLConfiguration;public class XMLConfigurationDemo ...{   public static void main(String[] args) throws ConfigurationException ...{     Configuration config = new XMLConfiguration(XMLConfigurationDemo.class         .getResource("/demo/system-config.xml"));     String ip = config.getString("ip");     String account = config.getString("account");     String password = config.getString("password");     List roles = config.getList("roles.role");     System.out.println("IP: " + ip);     System.out.println("Account: " + account);     System.out.println("Password: " + password);     System.out.println("★★★★★ Roles Begin ★★★★★");     for (int i = 0; i < roles.size(); i++) ...{       System.out.println("Role: " + roles.get(i));     }     System.out.println("★★★★★ Roles End ★★★★★");   }}

B.读取Properties配置文件:

ip=10.10.1.1account=jinipassword=jakarta99role1=adminrole2=managerrole3=usercolors.pie = #FF0000, #00FF00, #0000FF

测试代码:

package demo;import java.util.List;import org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.ConfigurationException;import org.apache.commons.configuration.PropertiesConfiguration;public class PropertiesConfigurationDemo ...{   public static void main(String[] args) throws ConfigurationException ...{     Configuration config = new PropertiesConfiguration(         PropertiesConfigurationDemo.class             .getResource("/demo/system-config.properties"));     String ip = config.getString("ip");     String account = config.getString("account");     String password = config.getString("password");     String role1 = config.getString("role1");     String role2 = config.getString("role2");     String role3 = config.getString("role3");     System.out.println("IP: " + ip);     System.out.println("Account: " + account);     System.out.println("Password: " + password);     System.out.println("★★★★★ Roles Begin ★★★★★");     System.out.println("Role1: " + role1);     System.out.println("Role2: " + role2);     System.out.println("Role3: " + role3);     System.out.println("★★★★★ Roles End ★★★★★");     String[] colors = config.getStringArray("colors.pie");     System.out.println("★★★★★ Use StringArray Begin ★★★★★");     for (int i = 0; i < colors.length; i++) ...{       System.out.println(colors[i]);     }     System.out.println("★★★★★ Use StringArray End ★★★★★");     List colorList = config.getList("colors.pie");     System.out.println("★★★★★ Use List Begin ★★★★★");     for (int i = 0; i < colorList.size(); i++) ...{       System.out.println(colorList.get(i));     }     System.out.println("★★★★★ Use List End ★★★★★");   }}

C.常见的配置资源

# PropertiesConfiguration 从一个 property 文件中加载配置 .

# XMLConfiguration 从 XML 文件中加载配置信息 .

# PropertyListConfiguration 从一个 .plist 文件中加载配置信息 . XMLPropertyListConfiguration 也可以读取 XML 被 Mac OSX 使用变量 .

# JNDIConfiguration 利用 jndi 树的一个键值,可以返回一个值,这个值来作为配置信息

# BaseConfiguration 访问内存中的一个配置对象 .

# HierarchicalConfiguration 一个在内存中的配置对象,这个对象可以处理复杂的数据结构 .

# SystemConfiguration 一个利用系统属性的配置信息

# ConfigurationConverter 把 java.util.Properties 或者  org.apache.collections.commons.ExtendedProperties 转化为一个 Configuration 对象

D.混合使用多种资源

经常你希望提供一套基本的配置信息,而且允许用户很容易的根据他们的特有的环境覆盖他们。

一种办法就是载你的代码中队默认值进行硬编码,并且提供一个配置文件来覆盖他们。  这是做法没有一点弹性。替换做法是:运用 CompositeConfiguration 。

CompositeConfiguration config = new CompositeConfiguration();config.addConfiguration(new SystemConfiguration());config.addConfiguration(new PropertiesConfiguration("application.properties"));

或者通过ConfigurationFactory这个类 :

ConfigurationFactory factory = new ConfigurationFactory("config.xml");Configuration config = factory.getConfiguration();

上面的config.xml是一个配置描述符。它定义了将要被装载的配置对象(资源文件),例如:

上面的config.xml是一个配置描述符。它定义了将要被装载的配置对象(资源文件),例如:

上面的意思是,我们加载了系统的配置,也加载了application.properties这个文件。

他的优先(precedence)顺序是从前到后。所以在上面的例子中,如果一个属性在系统配置中没有,他将在文件配置中查找。这将允许你在文件配置中设定默认值,而且可以在系统配置中覆盖他们。

因为你的喜爱会挡也挡不住地流露出来。

Jakarta-Common-Configuration使用笔记

相关文章:

你感兴趣的文章:

标签云: