HOCON条件替换周围文本

时间:2018-03-13 21:23:56

标签: java substitution playback hocon

我目前无法自己测试这种语法,因此问题是:

如果值被文本包围,是否仍然会发生值的替换/覆盖?

例如,我知道:

foo.baseUrl = "http://foo:1234/" foo.baseUrl = ${?FOO_BASE_URL}

如果ENV var foo.baseURL存在,

将覆盖FOO_BASE_URL

这里发生了什么?

foo.baseUrl = "http://foo:1234/" foo.baseUrl = "http://${?FOO_BASE_URL}:1234/"

如果ENV var存在,

是否仍会发生覆盖? 把它放在一个字符串中否定了这个吗?

2 个答案:

答案 0 :(得分:1)

只需进行一次快速测试,第二个值将替换第一个值,而缺少中间部分。因此,如果未定义FOO_BASE_URL,并且application.conf包含以下内容(请注意在第二行中省略了",则不会在双引号中执行变量替换):

foo.baseUrl = "http://foo:1234/"
foo.baseUrl = http://${?FOO_BASE_URL}:1234/
foo.baseUrl = ${?FOO_BASE_URL}

foo.baseUrl的值为http://:1234/。未找到的变量不会被替换。这就是行为的定义方式,有关更多信息,请参见Substitution部分。

答案 1 :(得分:-1)

来自文档:

  

对于应用程序的配置,Java系统属性会覆盖设置   在配置文件中找到。这支持指定config   命令行上的选项。

所以,是的ENV变种将覆盖文件中定义的变量。