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