Play 2.6 での Configuration の改善

2017/12/14   #Play Framework 
このエントリーをはてなブックマークに追加

Play 2.6の新機能 - たけぞう瀕死ブログ

Configurationの改善 play.api.Configurationにカスタム型で読み取るための新しいメソッドが追加された。任意の型に対応したimplicitなConfigLoaderを使用することができる。詳細は以下を参照:

https://www.playframework.com/documentation/2.6.x/ScalaConfig

ConfigLoader を定義し、configuration.get[任意の型] とすることで、任意の型で読み取ることができるようになる。

case class AppConfig(title: String, baseUri: URI)
object AppConfig {

  implicit val configLoader: ConfigLoader[AppConfig] = new ConfigLoader[AppConfig] {
    def load(rootConfig: Config, path: String): AppConfig = {
      val config = rootConfig.getConfig(path)
      AppConfig(
        title = config.getString("title"),
        baseUri = new URI(config.getString("baseUri"))
      )
    }
  }
}
// app.config = {
//   title = "My App"
//   baseUri = "https://example.com/"
// }
config.get[AppConfig]("app.config")