W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
前面章節(jié),我們已經(jīng)介紹了 Hasor 的配置文件結(jié)構(gòu)。下面我們介紹一個 Hasor 的配置文件的基本規(guī)則。
Hasor 配置文件在編寫時完全遵循 Xml 標(biāo)準(zhǔn)。但是因為沒有 xml 內(nèi)容上的固定限制,因此 Hasor 配置文件本質(zhì)上是沒有一個適合的 Sechma 可以去加以驗證的。
這是 Hasor 配置文件靈活性的一個表現(xiàn),也是區(qū)別于 Spring 等其它基于 Xml 做配置文件的框架的特點。
如果您不遵循這個規(guī)則那么您在讀取配置文件時就會陷入麻煩,因此建議您在使用 Hasor 配置文件之前一定要閱讀本段。
Hasor 在讀取配置文件時您并不是通過 Xml Dom 或者 XPath 表達式進行篩選,Hasor 為您提供了一套更為簡單方便而且對屬性文件也十分親和的讀取方式。我們以下面這個配置文件為例:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
<!-- Demo 項目源碼所處包 -->
<hasor debug="false">
<loadPackages>net.test.project.*</loadPackages>
</hasor>
<hasor-jdbc>
<!-- 名稱為 localDB 的內(nèi)存數(shù)據(jù)庫,數(shù)據(jù)庫引擎使用 HSQL -->
<dataSource name="localDB" dsFactory="net.test.C3p0Factory">
<driver>org.hsqldb.jdbcDriver</driver>
<url>jdbc:hsqldb:mem:aname</url>
</dataSource>
</hasor-jdbc>
</config>
hasor.debug
hasor.loadPackages
hasor-jdbc.dataSource.driver
??這種讀取規(guī)則我們可能感覺有點熟悉。它有點像Xpath,但又不同。下面我們就來正式介紹這種規(guī)則。
.
分割。??我們在回頭去看上面三個讀取的例子:
debug="false"
要讀取到 false,它所處的節(jié)點是一個屬性節(jié)點 debug
這個屬性節(jié)點位于 hasor
節(jié)點之下,hasor
節(jié)點在往上就是跟節(jié)點了,規(guī)則上說過 根節(jié)點除外
。因此最根節(jié)點就是 hasor
。因此它的路徑是:hasor -> debug
,接著路徑轉(zhuǎn)化為表達式:hasor.debug
。net.test.project.*
要讀取到這個值,它所處的節(jié)點是一個元素節(jié)點 loadPackages
這個元素節(jié)點位于 hasor
節(jié)點之下。因此它的路徑是:hasor -> loadPackages
,接著路徑轉(zhuǎn)化為表達式:hasor.loadPackages
。org.hsqldb.jdbcDriver
要讀取到這個值,它所處的節(jié)點是一個元素節(jié)點 driver
這個屬性節(jié)點位于 dataSource
節(jié)點之下,在往上是hasor-jdbc
元素節(jié)點。因此它的路徑是:hasor-jdbc -> dataSource -> driver
,接著路徑轉(zhuǎn)化為表達式:hasor-jdbc.dataSource.driver
。最后在得到表達式之后,我們通過 Settings
接口就可以讀取配置信息了:
AppContext appContext = Hasor.createAppContext("simple-config.xml");
Settings settings = appContext.getInstance(Settings.class);
String driver = settings.getString("hasor-jdbc.dataSource.driver");
以上就是 Hasor 配置文件的讀取規(guī)則。下面我們在討論一下特殊情況,這種情況我們要盡量回避,以避免給自己帶來麻煩。舉例Xml,我們還是讀取debug
配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
<hasor debug="false">
<debug>true</debug>
</hasor>
</config>
上面的配置文件中我們發(fā)現(xiàn) hasor
節(jié)點下面有兩個節(jié)點,一個是元素節(jié)點叫 debug
,一個是屬性節(jié)點也叫 debug
。根據(jù)我們上面的路徑規(guī)則,這兩個節(jié)點的最終表達式均為:hasor.debug
,這種情況我們稱之為配置沖突。
配置沖突要盡量避免。如果不小心遇到了沖突,Hasor 在加載配置文件時進行數(shù)據(jù)合并。相信無論合并之后選用哪個值,對您來說都是不想看到的。不過有時候沖突也會被我們所利用。
還是這個例子如果配置文件的內(nèi)容無法改變,但是我還想讀取 debug
辦法還是有的。既然直接讀取 debug 節(jié)點讀取不到,那我們可以讀它的父節(jié)點。通過父親節(jié)點以Xml的形式去解決它。具體解決辦法如下:
Settings settings = ...;
XmlNode node = settings.getXmlNode("hasor");
String attrDebug = node.getAttribute("debug");
String attrDebug = node.getOneChildren("debug").getText();
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: