我目前无法自己测试这种语法,因此问题是:
如果值被文本包围,是否仍然会发生值的替换/覆盖?
例如,我知道:
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = ${?FOO_BASE_URL}
foo.baseURL
存在,将覆盖FOO_BASE_URL
。
这里发生了什么?
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = "http://${?FOO_BASE_URL}:1234/"
是否仍会发生覆盖? 把它放在一个字符串中否定了这个吗?
答案 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变种将覆盖文件中定义的变量。