类型安全配置覆盖外部文件中的值



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

val config = ConfigFactory.load()

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

当我添加

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

它排除所有包含"application.conf"的原始属性,并且不会在"deploy.conf"中被覆盖。

有什么办法解决这个问题吗?

更新:

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

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

如果您手动创建它,则可以使用 withFallback 方法。

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

最新更新