Typesafe配置覆盖外部文件的值

时间:2017-07-05 19:58:36

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

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

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中的值,如果此文件不存在,则不会抛出任何异常?

1 个答案:

答案 0 :(得分:0)

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

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