W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
配置文件命名空間,主要應(yīng)用場景是模塊化下的 static-config.xml
配置文件。我們先看一個實際的例子,下面這些 xml 片段來自于 Hasor 的實際項目中。
來自 Hasor 核心項目包。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:root="http://project.hasor.net/hasor/schema/main" xmlns="http://project.hasor.net/hasor/schema/hasor-core">
<!-- http://project.hasor.net/hasor/schema/main命名空間默認配置 -->
<root:config>
<root:hasor.loadPackages>${HASOR_LOAD_PACKAGES}</root:hasor.loadPackages>
</root:config>
<hasor>
<loadPackages>net.hasor.*</loadPackages>
....
</hasor>
</config>
來自 RSF RPC項目。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/hasor-rsf">
<hasor>
<loadPackages>net.hasor.rsf.*</loadPackages>
...
</hasor>
</config>
來自 RSF 注冊中心項目。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/hasor-registry">
<hasor>
<loadPackages>net.hasor.rsf.registry.*</loadPackages>
...
</hasor>
</config>
從上面配置文件中可以看出,每個項目都有自己的 loadPackages
每個配置文件之間最重要的不同點是它們都使用了一個全新的 xmlns
空間。對于第一個 xml 文件顯得可能比較復(fù)雜,它是在一個 xml 中配置了兩個命名空間的數(shù)據(jù)。
Hasor 的配置文件就是通過這種方式來隔離不同的模塊,下面我們通過一個例子來展示一下配置文件模塊化的終極作用。
首先我們有兩個 static-config.xml
配置文件,它們分別位于jarA、jarB。兩個 jar 包中。不巧的是兩個項目彼此不知道對方的存在,它們都定義了相同的配置:
------static-config.xml(jarA)
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://mode1.myProject.net">
<appSettings>
<serverLocal url="www.126.com" />
</appSettings>
</config>
------static-config.xml(jarB)
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://mode2.myProject.net">
<appSettings>
<serverLocal url="www.souhu.com" />
</appSettings>
</config>
這時如果根據(jù)我們同時加載兩個配置文件,那么因為配置節(jié)節(jié)點沖突,我們在讀取配置時候肯定會導(dǎo)致一個配置文件的內(nèi)容丟失。但是如果是這樣就不會有問題:
Settings mod1 = settings.getSettings("http://mode1.myProject.net");
Settings mod2 = settings.getSettings("http://mode2.myProject.net");
System.out.println(mod1.getString("appSettings.serverLocal.url"));
System.out.println(mod2.getString("appSettings.serverLocal.url"));
下面這個配置文件,等同于上面兩個配置文件。懂得 xml 的同學(xué)肯定一眼就看出來了,其實下面這個配置文件只不過是把上面兩個配置文件的內(nèi)容合并到了一起。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:mod1="http://mode1.myProject.net" xmlns:mod2="http://mode2.myProject.net" xmlns="http://project.hasor.net/hasor/schema/main">
<!-- mode1 配置 -->
<mod1:config>
<mod1:appSettings>
<mod1:serverLocal mod1:url="www.126.com" />
</mod1:appSettings>
</mod1:config>
<!-- mode2 配置 -->
<mod2:config>
<mod2:appSettings>
<mod2:serverLocal mod2:url="www.souhu.com" />
</mod2:appSettings>
</mod2:config>
</config>
使用 Hasor 解析配置文件,使用上面一個配置文件或者上面兩個配置文件效果是一樣的。這個就是 Hasor 對配置文件命名空間的支持。下一個章節(jié)我們專門講解配置文件的加載順序,以及利用加載順序解決配置項目沖突。
多個命名空間配置相同的節(jié)點,在讀取配置時 http://project.hasor.net/hasor/schema/main
命名空間下的配置享有優(yōu)先權(quán)。其它命名空間的配置按照字符串排序順序決定。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: