程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Jakarta-Common-Configuration使用筆記

Jakarta-Common-Configuration使用筆記

編輯:關於JAVA

這是一個讀取配置文件的工具包。

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

A.讀取XML配置文件:

<config>
   <ip>10.10.1.1</ip>
   <account>jini</account>
   <password>jakarta99</password>
   <roles>
     <role>admin</role>
     <role>manager</role>
     <role>user</role>
   </roles>
</config>

測試代碼:

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.1
account=jini
password=jakarta99
role1=admin
role2=manager
role3=user

colors.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是一個配置描述符。它定義了將要被裝載的配置對象(資源文件),例如:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<system/>
<properties fileName="application.properties"/>
</configuration>

上面的config.xml是一個配置描述符。它定義了將要被裝載的配置對象(資源文件),例如:

上面的意思是,我們加載了系統的配置,也加載了application.properties這個文件。

他的優先(precedence)順序是從前到後。所以在上面的例子中,如果一個屬性在系統配置中沒有,他將在文件配置中查找。這將允許你在文件配置中設定默認值,而且可以在系統配置中覆蓋他們。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved