日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Commons Configuration 学习

發布時間:2024/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 elementsList startCriteria = config.getList("start-criteria.criteria");// Retrieve the value of the first criteria elementString firstCriteria = config.getString("start-criteria.criteria(0)");// Retrieve the type attribute of the first criteria elementString firstCriteriaType = config.getString("start-criteria.criteria(0)[@type]");// Retrieve the horsepower as an intint 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=50threads.min=2timeout=15.52interactive=truecolor=redspeed=50name=Default UserExample 7-3. local .properties # Overrides Global Propsthreads.max=30speed=55Example 7-4. user. properties # Overrides Local Propsthreads.min=1color=blackspeed=5000name=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 propertiesSystem.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>

?

總結

以上是生活随笔為你收集整理的Commons Configuration 学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。