【问题标题】:Typesafe Config overriding values from external file类型安全配置覆盖来自外部文件的值
【发布时间】:2017-12-09 15:18:14
【问题描述】:

我已将所有配置设置到位于 src/main/resources 下的 application.conf 中。当我在生产模式下运行我的应用程序时它工作正常。

val config = ConfigFactory.load()

在某些特定情况下,当我在 docker 容器中运行我的应用程序时,我需要覆盖大约 30 个属性。

当我添加时

-Dconfig.file="/etc/deployed.conf"

它排除了所有包含“application.conf”并且在“deployed.conf”中未被覆盖的原始属性。

有没有办法解决这个问题?

更新:

val myCfg =  ConfigFactory.parseFile(new File("etc/deployed.conf"))
val config = ConfigFactory.load().withFallback(myCfg)

覆盖 application.conf 中的值,如果此文件不存在不会抛出任何异常?

【问题讨论】:

  • 也许添加 .withFallback
  • 您是否尝试将deployed.conf 重命名为application.conf 只是为了查看是否存在约定问题?另外,我会设置 -Dconfig.trace=loads 标志并监视 stderr 以查看是否有任何分辨率问题。
  • @Roby 查看我的更新
  • @YuvalItzchakov 我按照您的建议重命名了外部配置并添加了跟踪,看起来 application.conf 被忽略了。它进入外部conf,然后进入akka jars中的reference.conf。
  • 它实际上解析了你的外部配置?

标签: scala configuration config app-config typesafe-config


【解决方案1】:

如果你创建它manually,你可以使用 withFallback 方法。

Config appConfig = ConfigFactory.parseResources(configs.remove(0));
for (String resource : configs) {
    appConfig = appConfig.withFallback(ConfigFactory.parseResources(resource));
}

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2021-11-02
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多