在访问HOCON文件中的环境变量时```的作用

时间:2017-02-15 03:40:07

标签: scala typesafe-config

docs说我可以访问这样的环境变量:

database_name = "${?DB_NAME}"

其中DB_NAME是环境变量。我是否必须设置问号?或是否存在问题以防止崩溃(如果它不存在?)

另外,我们是否允许在声明文件之前引用文件中的变量?

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

1 个答案:

答案 0 :(得分:5)

1- ?表示可选,因此如果环境变量在运行时不存在,则整行将被忽略,就像它在第一个位置不存在一样。因此,当您想要可选的覆盖时,请使用它。

有关详细信息,请参阅Optional Env Vars section of the docs

另请注意,?适用于所有替换,而不仅仅适用于env vars。

2-是的,您可以引用稍后在配置文件中定义的变量(正向引用)。只要值存在且没有循环(循环依赖),替换就会成功完成。

这样想:首先整个文件将在运行时解析,文字的值将绑定到他们的vars,然后替换将完成,因此顺序并不重要。