Scala:将值写入typesafe配置对象

时间:2014-06-11 02:10:03

标签: scala typesafe-config

我正在使用Typesafe配置&在我的资源目录中有一个配置文件,如下所示:

something {
  another {
    someconfig=abc
    anotherconfig=123
  }
}

如何使用scala更改anotherconfig的值?

2 个答案:

答案 0 :(得分:74)

如果要更改加载的配置(即根据旧配置创建新配置),可以使用withValue:

val newConfig = oldConfig.withValue("something.another.anotherconfig",
  ConfigValueFactory.fromAnyRef(456))

答案 1 :(得分:10)

您不能覆盖原始Config对象中的值,因为它是不可变的。您可以做的是使用您的值创建一个新的Config对象,使用原始作为后备。所以:

val myConfig = ConfigFactory.parseString("something.another.anotherconfig=456")
val newConfig = myConfig.withFallback(oldConfig)

然后在任何地方使用newConfig而不是原始配置。一个更易于维护的选择是使用您的更改并使用第二个配置文件:

val myConfig = ConfigFactory.load("local")
val oldConfig = ConfigFactory.load
val realConfig = myConfig.withFallback(oldConfig)

然后,您可以使用系统属性设置从{。<}添加myConfig的位置。