web-dev-qa-db-ja.com

Playにアクセス! application.confの2.0構成変数?

以前プレイ中! v1 application.confで設定変数を定義し、次のようにアクセスするのは本当に簡単でした。

play.configuration("db.driver")

ただし、v2での同様の使用法や適切な代替方法については、ドキュメントに何も見つかりません。そのための方法は何ですか?

80
crockpotveggies

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ドキュメント をご覧ください。

34
Ali Dehghani

Play 2.0 Scalaこれに相当するものは:

Play.current.configuration.getString("db.driver")

import play.api.Playも必要になります

これに関する完全なドキュメントは here です。

115
Alex Varju

Play 2.0に適用-Java Controllerでは次を使用できます:

String optionValue = Play.application().configuration().getString("db.driver");

変数を取得するにはin viewこれを使用します:

@play.Play.application().configuration().getString("db.driver")
57
vladaman

Play 2.3.2 for Javaでは、com.typesafe.config.ConfigFactoryオプション:

Config conf = ConfigFactory.load();
String myFooBarConfiguration = conf.getString("foo.bar");

動きの速いAPI!

21
Tony Day

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を調べます。

6
Michael Besteck

In Play Scala 2.3.xおよび2.4.x、conf/application.conf、次のことができます。

import play.api.Play.current
...
current.configuration.getString("db.driver")
5
cmd

Play 2.0.1 Javaでは、これを行う必要があります。

import play.Application.*;
...
String optionValue = play.Play.application().configuration().getString("my.config");
4
mstreffo

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

2
db80

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ソリューションを回避することでした。

2
Moritz

ここでの@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
   ...
1
yerlilbilgin

// 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

0
Dawid Furman

他の人が述べたように、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

誰もがより良い答えを提案しますか?

0
peoplemerge