42

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

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

我将如何改变anotherconfig使用 scala 的价值?

4

2 回答 2

89

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

val newConfig = oldConfig.withValue("something.another.anotherconfig",
  ConfigValueFactory.fromAnyRef(456))
于 2014-06-11T06:56:45.253 回答
12

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

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

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

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

然后,您可以使用系统属性来设置myConfig从何处加载。

于 2014-06-12T13:13:52.927 回答