Hasor 使用環(huán)境變量

2018-10-08 09:17 更新

配置 Hasor 的環(huán)境變量有很多渠道,最簡單的就是像配置 JAVA_HOME 一樣配置一個(gè)系統(tǒng)環(huán)境環(huán)境變量。Hasor 的環(huán)境變量列表中是包含系統(tǒng)環(huán)境變量的。為了方便大家記憶,下面列了一個(gè)清單。表示屬于 Hasor 環(huán)境變量范疇的都有哪些:

  • 1.操作系統(tǒng)的環(huán)境變量,例如:JAVA_HOME or System.getenv()
  • 2.JVM的啟動(dòng)參數(shù),例如:java xxxx -Dvar=...
  • 3.Java的屬性,例如:System.getProperties()
  • 4.Hasor的 env.config 屬性文件
  • 5.Hasor配置文件(含靜態(tài)配置文件)中的 hasor.environmentVar 配置節(jié)點(diǎn)。

下面我們主要講解 hasor.environmentVar 節(jié)點(diǎn)的配置方法,以及如何讀取到環(huán)境變量。下面兩個(gè)環(huán)境變量配置的骨架您可以根據(jù)實(shí)際情況自由選擇:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        ...
    </hasor.environmentVar>
</config>

or

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor>
        <environmentVar>
            ...
        </environmentVar>
    </hasor>
</config>


第一個(gè)例子


第一個(gè)環(huán)境變量:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_VAR>Hello Word</MY_VAR>
    </hasor.environmentVar>
</config>


在項(xiàng)目中讀取這個(gè)環(huán)境變量:

AppContext appContext = ...
Environment env = appContext.getEnvironment();
System.out.println(env.evalString("%MY_VAR%"));


在 Hasor 中讀取環(huán)境變量目前您不可以通過類似 xx.getVar("MY_VAR") 這種 API 來獲取,您必須通過表達(dá)式獲取。環(huán)境變量表達(dá)式的寫法是:%<var name>%。

環(huán)境變量表達(dá)式


例1:引用其它環(huán)境變量

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_VAR>Hello Word , this is my JAVA_HOME : %JAVA_HOME%</MY_VAR>
    </hasor.environmentVar>
</config>


MY_VAR 的輸出結(jié)果是:Hello Word , this is my JAVA_HOME : xxxxxx

例2:引用多個(gè)環(huán)境變量

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://project.hasor.net/hasor/schema/main">
    <hasor.environmentVar>
        <MY_NAME>zyc</MY_NAME>
        <MY_AGE>100</MY_>
        <MY_VAR>my name is : %MY_NAME% , age is %MY_AGE%</MY_VAR>
    </hasor.environmentVar>
</config>


MY_VAR 的輸出結(jié)果是:my name is : zyc , age is 100

例3:動(dòng)態(tài)覆蓋

現(xiàn)在我們?cè)?例2 的基礎(chǔ)上不做任何代碼變化,只是在 jvm 啟動(dòng)時(shí)增加一個(gè)參數(shù):-DMY_NAME=ccc,在看輸出結(jié)果就變成了:my name is : ccc , age is 100

例4:代碼中使用環(huán)境變量表達(dá)式:

AppContext appContext = ...
Environment env = appContext.getEnvironment();
System.out.println(env.evalString("i say %MY_VAR%."));


約定


本質(zhì)上 Hasor 對(duì)于環(huán)境變量的定義是不區(qū)分大小寫的,您可以在 environmentVar 節(jié)點(diǎn)中定義全大寫環(huán)境變量名,也可以是全小寫,甚至大小寫混運(yùn)用。但是這樣做之后 xml 是無法檢測出任何錯(cuò)誤,但是 Hasor 框架在加載您的配置文件時(shí)會(huì)把它們統(tǒng)一做大寫化轉(zhuǎn)換,進(jìn)而導(dǎo)致您的環(huán)境變量配置失效。所以我們做出君子約定。

  • 環(huán)境變量名,要求全部必須大寫


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)