繁体   English   中英

使用typesafe / akka config合并多个配置级别

[英]merging multiple levels of configuration using typesafe/akka config

我在看: https//github.com/typesafehub/config

假设我想要一个默认配置,例如reference.conf,然后我想要dev / prod覆盖(两个不同的application.conf),然后我还想要从这两个应用程序继承的特定于主机的覆盖.conf并最终默认为reference.conf。 我该怎么做?

例如,我想象的目录结构如下:

resources/reference.conf
resources/prod/application.conf
resources/prod/master.conf
resources/prod/slave.conf
resources/dev/application.conf
resources/dev/master.conf
resources/dev/slave.conf

或者它可能是资源/ dev / master / application.conf?

某处我会指定一个环境,即可能从应用程序启动的主机名中提取。

如果应用程序是master.dev.example.com,我希望我能够做类似的事情:

getConfigurations("dev/master.conf").withDefaultsFrom(
    getConfigurations("dev/application.conf").withDefaultsFrom(
        getConfigurations("resource.conf"))

但是我很难理解使用给定库的确切结果。

我看到我可以设置一个config.resource系统属性,但看起来它只允许一级覆盖,dev-application.conf - > resources.conf,而不是像master-node.conf那样 - > dev-application .conf - > resources.conf。

我看到一个.withFallback方法,但似乎我想在一个文件中混合两种配置,而不是将资源/文件链接在一起。

将多个withFallback与首先具有最高优先级的配置一起使用。 例如:

Config finalConfig = 
  ConfigFactory.systemProperties().
    withFallback(masterConfig).
    withFallback(applicationConfig).
    withFallback(referenceConfig)

像CONFIGS的每个masterConfig将已装有Config.parseFile 您也可以使用ConfigFactor.load作为方便,但parseXXX方法可以让您更好地控制层次结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM