Scala: записать значение в типизированный объект конфигурации

Я использую конфигурацию Typesafe и имею файл конфигурации в каталоге ресурсов, который выглядит так:

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

Как мне изменить значение anotherconfig с помощью scala?


person goo    schedule 11.06.2014    source источник


Ответы (2)


Если вы хотите изменить загруженный конфиг (т.е. создать новый конфиг на основе старого), вы можете использовать withValue:

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

Вы не можете перезаписать значение в исходном объекте 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.

person Mario Camou    schedule 12.06.2014