2014-06-11 14 views
24

sto usando Typesafe config & hanno un file di configurazione nella mia directory delle risorse che assomiglia a questo:Scala: Scrivere valore typesafe oggetto config

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

Come dovrei modificare il valore di anotherconfig usando Scala?

risposta

54

Se si desidera modificare la configurazione caricato (cioè creare una nuova configurazione basata su quello vecchio), è possibile utilizzare withValue:

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

Non è possibile sovrascrivere un valore nell'oggetto originale Config dal è immutabile. Quello che puoi fare è creare un nuovo oggetto Config con i tuoi valori, usando l'originale come fallback. Quindi:

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

e quindi utilizzare newConfig ovunque anziché la configurazione originale. Un'opzione più gestibile sarebbe quella di avere un file di configurazione 2 ° con le modifiche e l'uso:

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

È quindi possibile utilizzare una proprietà di sistema per impostare dove caricare myConfig da.

Problemi correlati