Доступ Играть! 2.0 переменные конфигурации в приложении.конф?
ранее в игре! v1 было очень легко определить переменные конфигурации в application.conf
а затем получить к ним доступ Вот так:
play.configuration("db.driver")
однако теперь я не могу найти ничего в документации для аналогичного использования в v2 или надлежащей альтернативы. Каков метод для этого?
13 ответов:
начиная с игры 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")) } }
оформить заказ играть документацией для более детального обсуждения.
игра 2.0 Scala эквивалентно этому было бы:
Play.current.configuration.getString("db.driver")
Вам также понадобится
import play.api.Play
полные документы для этого здесь.
применяется для игры 2.0-In Java Controller вы можете использовать следующие:
String optionValue = Play.application().configuration().getString("db.driver");
чтобы получить значение переменной в виде используйте этот:
@play.Play.application().configuration().getString("db.driver")
на играть 2.3.2 для Java можно использовать :
Config conf = ConfigFactory.load(); String myFooBarConfiguration = conf.getString("foo.bar");
быстрый переход API!
еще один метод, проверенный в играть 2.3[.8] / Java для доступа к значениям из приложения.conf:
чтобы проверить версию воспроизведения, изучите файл project / plugins. Строка, содержащая "sbt-plugin", должна иметь спецификацию версии, например"2.3.8".
Если, например, приложения.conf содержит строки
myConfigStringValue=abc myConfigBooleanValue=true
можно запросить эти значения из файла/класса java, например
import play.Configuration; ... String myString = Configuration.root().getString("myConfigStringValue"); Boolean myBoolean = Configuration.root().getBoolean("myConfigBooleanValue");
получить... методы возвращают null, если значение не найден, есть еще и get... методы, которые принимают значение по умолчанию в качестве аргумента.
Подробнее см. https://www.playframework.com/documentation/2.3.x/api/java/index.html
и осмотреть класс.Конфигурация.
В Игре Scala 2.3.x и 2.4.х, чтобы прочитать значение из
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");
В Игре 2.1, Scala Во-первых, вы должны
import play.api.Play Play.current.configuration.getString("varibale name")
В случае, если вы используете Играть 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'
главная цель состояла в том, чтобы избежать чисто
get
решение @peoplemerge уже упоминалось в то время выбрасывание определенного исключения, если его нет.
в 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
как небольшой вклад / улучшение для всех
@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 ...
как уже упоминалось, вам нужно импортировать игру.прикладной программный интерфейс.Играть.текущий. Тогда, если вы запустите:
current.configuration.getString("db.driver")
на 2.3.x / scala 10 вы получите
type mismatch; found : Option[String] required: String
Если это обязательно, это будет работать:
url = current.configuration.getString("db.driver").get
кто-нибудь предлагает лучший ответ?
// новый подход после 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