2017-02-15 44 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