有没有办法在HOCON中将节点向上移动?

Pet*_*son 5 java config typesafe hocon

我正在使用typesafe配置,我正在寻找一种简单的方法来允许在应用程序之间共享的配置文件中的属性的可选覆盖.

所以假设我有2个应用程序,A和B.它们都使用模块Z.它们都加载了共享配置文件'shared.conf'.

模块Z在其reference.conf中定义了一个属性

z.foo=bar
Run Code Online (Sandbox Code Playgroud)

我希望能够

#override the property for both A & B
z.foo=zap
Run Code Online (Sandbox Code Playgroud)

要么

#override the property for just A
a.z.foo=zip
Run Code Online (Sandbox Code Playgroud)

我知道我可以在每个应用程序的application.conf中只为'z'前缀执行此操作.例如

z = ${?a.z}
Run Code Online (Sandbox Code Playgroud)

但我希望可能有一种方法可以一直移动到根节点.例如

MAGICAL_ROOT = ${?a}
Run Code Online (Sandbox Code Playgroud)

我希望有可能吗?

Tom*_*tah 0

根据config github存储库中的文档,将子树提升到根的方法不是在配置本身中,而是在代码中。

我将引用:

您还可以使用 withFallback 合并一些硬编码值,或将子树“提升”到配置的根;假设你有类似的东西:

foo=42
dev.foo=57
prod.foo=10
Run Code Online (Sandbox Code Playgroud)

然后你可以编写如下代码:

Config devConfig = originalConfig
                    .getConfig("dev")
                    .withFallback(originalConfig)
Run Code Online (Sandbox Code Playgroud)

就你而言,你想要类似的东西:

Config aConfig = originalConfig
                    .getConfig("a")
                    .withFallback(originalConfig)
Run Code Online (Sandbox Code Playgroud)

您可以阅读有关合并配置树的更多信息。