Supposons que j'ai une classe de cas scala avec la possibilité de sérialiser en JSON (en utilisant json4s ou une autre bibliothèque):Case Classe instanciation De Typesafe Config
case class Weather(zip : String, temp : Double, isRaining : Boolean)
Si j'utilise un fichier de configuration HOCON:
allWeather {
BeverlyHills {
zip : 90210
temp : 75.0
isRaining : false
}
Cambridge {
zip : 10013
temp : 32.0
isRainging : true
}
}
Est-il possible d'utiliser typesafe config instancier automatiquement un objet Weather
?
Je cherche quelque chose de la forme
val config : Config = ConfigFactory.parseFile(new java.io.File("weather.conf"))
val bevHills : Weather = config.getObject("allWeather.BeverlyHills").as[Weather]
La solution pourrait tirer parti du fait que la valeur référencée par "allWeather.BeverlyHills"
est un JSON « blob ».
Je ne pouvais évidemment écrire mon propre analyseur:
def configToWeather(config : Config) =
Weather(config.getString("zip"),
config.getDouble("temp"),
config.getBoolean("isRaining"))
val bevHills = configToWeather(config.getConfig("allWeather.BeverlyHills"))
Mais cela semble inélégant puisque toute modification de la définition météo nécessiterait également un changement de configToWeather
.
Merci d'avance pour votre commentaire et votre réponse.
+1 pour pureconfig. Vous connaissez l'excellent [configuration management] de Spring Boot (https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html), pureconfig est la chose la plus proche Je pourrais trouver à Scala. –