Доступ играть! 2.0 переменные конфигурации в application.conf? - PullRequest
80 голосов
/ 25 марта 2012

Ранее в игре!v1 было действительно легко определить переменные конфигурации в application.conf, а затем обращаться к ним следующим образом:

play.configuration("db.driver")

Однако сейчас я не могу найти ничего в документации для аналогичного использования в v2 или подходящей альтернативы.Какой метод для этого?

Ответы [ 13 ]

115 голосов
/ 25 марта 2012

Эквивалент Play 2.0 в Scala эквивалентен этому:

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

Вам также понадобится import play.api.Play

Полный набор документов для этого здесь .

57 голосов
/ 22 июля 2012

Относится к Play 2.0 - В Java Controller вы можете использовать следующее:

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

Чтобы получить переменную в поле зрения , используйте это:

@play.Play.application().configuration().getString("db.driver")
34 голосов
/ 08 мая 2016

Начиная с версии 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 для более подробного обсуждения.

21 голосов
/ 11 августа 2014

В Play 2.3.2 для Java вы можете использовать опцию com.typesafe.config.ConfigFactory:

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

Быстро движущийся API!

6 голосов
/ 17 июня 2015

Другой метод, протестированный в Play 2.3 [.8] / Java для доступа к значениям из application.conf:

Чтобы проверить версию Play, изучите файл проекта / плагины. Строка, содержащая «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 ... возвращают нуль, если значение не найдено, также существуют методы get ..., которые принимают значение по умолчанию в качестве аргумента.

Подробнее см. https://www.playframework.com/documentation/2.3.x/api/java/index.html

и проверьте игру класса. Конфигурация.

5 голосов
/ 04 октября 2014

В Play Scala 2.3.x и 2.4.x, чтобы прочитать значение из conf/application.conf, вы можете сделать следующее:

import play.api.Play.current
...
current.configuration.getString("db.driver")
4 голосов
/ 14 февраля 2013

В Play 2.0.1 Java вам нужно сделать следующее:

import play.Application.*;
...
String optionValue = play.Play.application().configuration().getString("my.config");
3 голосов
/ 19 апреля 2013

In Play 2.1, Scala Во-первых, вы должны import play.api.Play Play.current.configuration.getString("varibale name")

2 голосов
/ 02 февраля 2017

В Java с play> 2.5.X вы можете прочитать значения конфигурации с помощью помощника ConfigFactory:

ConfigFactory.load().getString("redis.url")

или

ConfigFactory.load().getInt("redis.port")

Объект Config преобразует параметр в правильный тип.Он предоставляет методы для обработки любого типа Java (getDouble, getLong и т. Д., И т. Д.)

Doc: https://www.playframework.com/documentation/2.5.0/api/java/play/Configuration.html

2 голосов
/ 16 марта 2016

Если вы используете Play Scala , я нашел этот подход наиболее подходящим после поиска некоторых лучших практик.Для этого я ввел конфигурацию и затем получил доступ к своему ключу конфигурации следующим образом:

import play.api.Configuration

class myClass @Inject()(
  config: Configuration
) {
  val configValue: String = config.underlying.getString("configKey")
}

Таким образом, вы получаете не Option, а String.В случае, если он недоступен, он генерирует исключение:

Error injecting constructor, com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'configKey'

Основная цель состояла в том, чтобы избежать чистого get решения, которое @ peoplemerge уже упоминалось при создании конкретного исключения, если нет.

...