我正在使用一个HOCON配置文件,其中也有替换变量。但是在替换变量的情况下,键不会被另一个值覆盖到同一个文件中。例如,考虑以下HOCON配置:
{
"x":5
"x":6
"y":{"a":1}
"y":{"a":11}
"z":${y.a}
"z":${y.a}
}现在,当我从ConfigFactor.parseURL加载它时,得到的配置是:
{"x":6,"y":{"a":11},"z":${y.a},"z":${y.a}}在这里,y必须得到解决,但是z不会出现这种情况。
问题:
发布于 2020-07-03 14:08:18
您只是解析配置文件而不解析它。您必须调用resolve()方法。
检查以下示例
val options: ConfigRenderOptions = ConfigRenderOptions
.defaults()
.setComments(false)
.setOriginComments(false)
.setFormatted(false)
.setJson(true)
val parsed = ConfigFactory.parseString("""
|{
| "x":5
| "x":6
| "y":{"a":1}
| "y":{"a":11}
| "z":${y.a}
| "z":${y.a}
|}
|""".stripMargin)
println(parsed.root().render(options))
println(parsed.resolve().root().render(options))打印
{"x":6,"y":{"a":11},"z":${y.a},"z":${y.a}}
{"x":6,"y":{"a":11},"z":11}请注意,parse/resolve方法用于高级/自定义配置加载。
如果您只是加载application.conf和reference.conf文件,我建议只使用load*方法。或者使用ConfigFactory.load(ConfigFactory.parse...)方式解析解析的配置。
https://stackoverflow.com/questions/62715179
复制相似问题