![](/img/trans.png)
[英]Typesafe Config: Load configuration from src/test/resources
[英]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.