Java 带周围文本的HOCON条件替换

Java 带周围文本的HOCON条件替换,java,substitution,playback,hocon,Java,Substitution,Playback,Hocon,我目前没有办法自己测试这个语法,因此问题是: 如果一个值被文本包围,它还会被替换/重写吗 例如,我知道: foo.baseUrl=”http://foo:1234/" foo.baseUrl=${?foo_BASE_URL} 如果环境变量foo_BASE_URL存在,将覆盖foo.baseURL 这里发生了什么 foo.baseUrl=”http://foo:1234/" foo.baseUrl=“http://${?foo\u BASE\u URL}:1234/” 如果环境变量存在,是

我目前没有办法自己测试这个语法,因此问题是:

如果一个值被文本包围,它还会被替换/重写吗

例如,我知道:


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

如果环境变量
foo_BASE_URL
存在,将覆盖
foo.baseURL

这里发生了什么


foo.baseUrl=”http://foo:1234/"
foo.baseUrl=“http://${?foo\u BASE\u URL}:1234/”

如果环境变量存在,是否仍会发生覆盖?
把它放在一个字符串中会否定这一点吗?

刚刚运行了一个快速测试,第二个值将替换第一个值,缺少中间部分。因此,如果未定义
FOO\u BASE\u URL
,并且
application.conf
包含以下内容(注意第二行中省略了
,则不会在双引号内执行变量替换):

foo.baseUrl
的值将是
http://:1234/
。未找到的变量在第二行被视为空字符串。文档部分的相关引用:

如果使用
${foo}
语法的替换未定义:

  • 如果它是对象字段的值,则不应创建该字段。如果该字段将覆盖同一字段先前设置的值,则先前的值将保留
  • 如果是数组元素,则不应添加该元素
  • 如果它是与另一个字符串连接的值的一部分,则它应成为空字符串;如果它是与对象或数组连接的值的一部分,则它应成为空对象或数组
  • foo:${bar}
    将避免在
    bar
    未定义的情况下创建字段
    foo
    foo:${bar}${baz}
    也将避免在
    bar
    baz
    都未定义的情况下创建字段

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

foo.baseUrl
的值将是
http://:1234/
。未找到的变量在第二行被视为空字符串。文件部分的相关引用:

如果使用
${foo}
语法的替换未定义:

  • 如果是对象字段的值,则不应创建该字段。如果该字段将覆盖同一字段先前设置的值,则先前的值将保留
  • 如果是数组元素,则不应添加该元素
  • 如果它是与另一个字符串连接的值的一部分,那么它应该成为一个空字符串;如果一个值的一部分与一个对象或数组连接,它应该成为一个空对象或数组
  • foo:${?bar}
    将避免在
    bar
    未定义的情况下创建字段
    foo
    foo:${bar}${baz}
    如果
    bar
    baz
    都未定义,也可以避免创建字段

我很抱歉,谢谢,否则我就不会问了:-)有什么特别的部分我错过了吗@LeoI RTFM,谢谢,否则我不会问:-)有没有什么特别的部分我错过了@狮子座
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = http://${?FOO_BASE_URL}:1234/
foo.baseUrl = ${?FOO_BASE_URL}