2017-02-15 41 views
2

docs說,我可以訪問這樣的環境變量:角色``在HOCON文件訪問環境變量時

database_name = "${?DB_NAME}" 

DB_NAME是一個環境變量。如果不存在,我必須將問號?或防止崩潰嗎?

另外,我們是否允許在聲明之前在文件中引用變量?

foo = "hello-${bar}" 
bar = "baz" 
+0

最好提出兩個不同的問題,每個問題一個。 –

回答

4

1- ?意味着可選的,因此如果環境變量不存在運行時的整條生產線將被忽略,因爲如果它沒有在首位存在。所以,當你想要可選的覆蓋時使用它。

有關更多信息,請參閱Optional Env Vars section of the docs

另請注意,?適用於所有替代品,而不僅僅是env vars。

2-是的,您可以引用稍後在配置文件中定義的變量(正向引用)。只要該值存在並且沒有循環(循環依賴),替換將成功完成。

想到這樣:首先整個文件將在運行時解析,文字的值將被綁定到它們的變量,然後替換將完成,所以順序並不重要。

+0

所以我必須使用?與環境變量?如果不是,我如何正常訪問它們? – Blankman

+0

不,你不必使用它們。只有當你想'可選覆蓋'。正常使用情況是'myVar = $ {MY_ENV_VAR}'。 –

+0

我看到,只是混淆了它是如何知道它是一個ENV VAR然後,大寫鎖定? :) – Blankman