web-dev-qa-db-fra.com

Scala: écrire une valeur dans l'objet de configuration typesafe

J'utilise la configuration de Typesafe et j'ai un fichier de configuration dans mon répertoire de ressources qui ressemble à ceci:

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

Comment changer la valeur de anotherconfig à l'aide de scala?

33
goo

Si vous souhaitez modifier la configuration chargée (c'est-à-dire créer une nouvelle configuration basée sur l'ancienne), vous pouvez utiliser withValue:

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

Vous ne pouvez pas écraser une valeur dans l'objet Config d'origine car il est immuable. Ce que vous pouvez faire est de créer un nouvel objet Config avec vos valeurs, en utilisant l'original comme solution de rechange. Donc:

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

puis utilisez newConfig partout au lieu de votre configuration d'origine. Une option plus facile à gérer serait d'avoir un 2ème fichier de configuration avec vos modifications et d'utiliser:

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

Vous pouvez ensuite utiliser une propriété système pour définir où charger myConfig.

10
Mario Camou