web-dev-qa-db-ja.com

Scala:タイプセーフな構成オブジェクトに値を書き込む

Typesafeの設定を使用していますが、リソースディレクトリに次のような設定ファイルがあります。

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

Scalaを使用してanotherconfigの値を変更するにはどうすればよいですか?

33
goo

ロードされた構成を変更する(つまり、古い構成に基づいて新しい構成を作成する)場合は、withValueを使用できます。

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

不変なので、元のConfigオブジェクトの値を上書きすることはできません。できることは、元の値をフォールバックとして使用して、値を持つ新しいConfigオブジェクトを作成することです。そう:

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

そして、元のConfigの代わりにどこでもnewConfigを使用します。より保守しやすいオプションは、変更を含む2番目の構成ファイルを作成して使用することです。

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

次に、システムプロパティを使用して、myConfigのロード元を設定できます。

10
Mario Camou