§Scala設定API
PlayはTypesafe configライブラリを使用していますが、Playはより高度なScala機能を備えたConfigurationという便利なScalaラッパーも提供しています。Typesafe configに馴染みがない場合は、設定ファイルの構文と機能に関するドキュメントも参照してください。
§設定へのアクセス
通常、依存性注入、または単にConfigurationのインスタンスをコンポーネントに渡すことで、Configurationオブジェクトを取得します。
class MyController @Inject() (config: Configuration, c: ControllerComponents) extends AbstractController(c) {
def getFoo = Action {
Ok(config.get[String]("foo"))
}
}
getメソッドは最もよく使用するメソッドです。これは、設定ファイル内のパスにある単一の値を取得するために使用されます。
// foo = bar
config.get[String]("foo")
// bar = 8
config.get[Int]("bar")
// baz = true
config.get[Boolean]("baz")
// listOfFoos = ["bar", "baz"]
config.get[Seq[String]]("listOfFoos")
これは暗黙的なConfigLoaderを受け入れますが、String、Int、さらにはSeq[String]などの最も一般的な型については、期待どおりに動作するローダーがすでに定義されています。
Configurationは、有効な値のセットに対する検証もサポートしています。
config.getAndValidate[String]("foo", Set("bar", "baz"))§ConfigLoader
独自のConfigLoaderを定義することで、設定をカスタム型に簡単に変換できます。これはPlay内部で広範囲に使用されており、構成の使用に型安全性を高めるための優れた方法です。たとえば
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"))
)
}
}
}
次に、上記のようにconfig.getを使用できます。
// app.config = {
// title = "My App
// baseUri = "https://example.com/"
// }
config.get[AppConfig]("app.config")§オプションの設定キー
PlayのConfigurationは、getOptional[A]メソッドを使用してオプションの設定キーを取得することをサポートしています。これはget[A]とまったく同じように動作しますが、キーが存在しない場合はNoneを返します。このメソッドを使用する代わりに、設定ファイルでオプションのキーをnullに設定し、get[Option[A]]を使用することをお勧めします。ただし、標準外の方法で構成を使用するライブラリとのインターフェースが必要な場合に備えて、このメソッドを提供しています。
次へ: HTTPプログラミング
このドキュメントにエラーを見つけましたか?このページのソースコードはこちらにあります。 ドキュメントガイドラインを読んだ後、プルリクエストを自由にご投稿ください。質問や共有するアドバイスがありますか?コミュニティフォーラムでコミュニティとの会話を始めてください。