以前プレイ中! v1 application.conf
で設定変数を定義し、次のようにアクセスするのは本当に簡単でした。
play.configuration("db.driver")
ただし、v2での同様の使用法や適切な代替方法については、ドキュメントに何も見つかりません。そのための方法は何ですか?
Play 2.5以降、play.api.Play.current
は非推奨です。依存性注入を使用してEnvironment
またはConfiguration
を注入し、それを使用して構成値を読み取る必要があります。
class HomeController @Inject() (configuration: play.api.Configuration) extends Controller {
def config = Action {
Ok(configuration.underlying.getString("db.driver"))
}
}
詳細については、 Playドキュメント をご覧ください。
Play 2.0 Scalaこれに相当するものは:
Play.current.configuration.getString("db.driver")
import play.api.Play
も必要になります
これに関する完全なドキュメントは here です。
Play 2.0に適用-Java Controllerでは次を使用できます:
String optionValue = Play.application().configuration().getString("db.driver");
変数を取得するにはin viewこれを使用します:
@play.Play.application().configuration().getString("db.driver")
Play 2.3.2 for Javaでは、com.typesafe.config.ConfigFactory
オプション:
Config conf = ConfigFactory.load();
String myFooBarConfiguration = conf.getString("foo.bar");
動きの速いAPI!
Application.confから値にアクセスするために、Play 2.3 [.8]/Javaでテストされた別の方法:
Playバージョンを確認するには、ファイルproject/pluginsを調べます。 「sbt-plugin」を含む行には、「2.3.8」のようなバージョン仕様が必要です。
たとえば、application.confに次の行が含まれている場合
myConfigStringValue=abc
myConfigBooleanValue=true
Javaファイル/クラスのような値をクエリすることができます
import play.Configuration;
...
String myString = Configuration.root().getString("myConfigStringValue");
Boolean myBoolean = Configuration.root().getBoolean("myConfigBooleanValue");
値が見つからない場合、get ...メソッドはnullを返します。引数としてデフォルト値を取るget ...メソッドもあります。
詳細については、 https://www.playframework.com/documentation/2.3.x/api/Java/index.html を参照してください
クラスplay.Configurationを調べます。
In Play Scala 2.3.xおよび2.4.x、conf/application.conf
、次のことができます。
import play.api.Play.current
...
current.configuration.getString("db.driver")
Play 2.0.1 Javaでは、これを行う必要があります。
import play.Application.*;
...
String optionValue = play.Play.application().configuration().getString("my.config");
Play 2.1では、Scalaまずimport play.api.Play Play.current.configuration.getString("varibale name")
する必要があります
Java play> 2.5.Xでは、ConfigFactoryヘルパーを介して設定値を読み取ることができます。
ConfigFactory.load().getString("redis.url")
または
ConfigFactory.load().getInt("redis.port")
オブジェクトConfigは、paramを正しいタイプに変換します。任意のJavaタイプ(getDouble、getLongなど))を処理するメソッドを公開します
Doc: https://www.playframework.com/documentation/2.5.0/api/Java/play/Configuration.html
Play Scalaを使用している場合、ベストプラクティスを検索した後、このアプローチが最も適切であることがわかりました。そうするために、私は設定をインジェクトし、次のように私の設定キーにアクセスしました:
import play.api.Configuration
class myClass @Inject()(
config: Configuration
) {
val configValue: String = config.underlying.getString("configKey")
}
この方法では、オプションではなく文字列を取得します。利用できない場合は、例外をスローします:
Error injecting constructor, com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'configKey'
主な目標は、なしの場合に特定の例外をスローする際に @ peoplemerge が既に言及されている純粋なget
ソリューションを回避することでした。
ここでの@Inject
のすべての回答に対する小さな貢献/改善として、config.underlying
実装を呼び出す必要はありません。 config.getString
を直接使用できます
例:
@Singleton
class RESTSessionChecker @Inject()(
implicit override val conf: Configuration)
extends Filter {
val MAX_CONCURRENT_REQUESTS = conf.getString("MAX_CONCURRENT_REQUESTS").
getOrElse("100").toInt
...
// 2.5.x以降の新しいアプローチ
import javax.inject.Inject
import play.api.Configuration
class Example @Inject() (playconfiguration: Configuration) {
def index() = {
val confString: String = playconfiguration.getString("confKey").get
}
}
ソース: https://www.webkj.com/play-framework/play-scala-2.5-reading-config-using-di
他の人が述べたように、play.api.Play.currentをインポートする必要があります。次に、実行する場合:
current.configuration.getString("db.driver")
2.3.x/scala 10では、
type mismatch;
found : Option[String]
required: String
これが必須の場合、これは機能します。
url = current.configuration.getString("db.driver").get
誰もがより良い答えを提案しますか?