Доступ к приложению.свойства conf из класса java с игрой! 2.0


Я хочу добавить объект в глобальную область видимости, и для его построения мне нужно передать ему путь к файлу. Я не хочу жестко кодировать путь к файлу в источнике, и поэтому я хочу получить этот путь из приложения.конф.

проблема в том, что я не знаю, как получить доступ к этим свойствам из класса java. Я попробовал это:

Configuration.root().getString("file.path")

но он заканчивается NullPointerException.

я ошибаюсь, предполагая, что есть глобальный Экземпляр конфигурации, который я могу использовать? Спасибо.

10 54

10 ответов:

попробовать Play.application().configuration().getString("your.key")

как отмечено в комментарии (nico_ekito), пожалуйста, используйте play.Play, а не play.api.Play. play.api.Play для контроллеров scala (см. комментарий Маркуса биесиора Биесиороффа)

кроме того, play использует https://github.com/typesafehub/config под капотом, так что он также может обеспечить некоторые идеи.

даже если это кажется простым, вот это скала способ получения свойств из файла конфигурации:

игры 2.0 и 2.1:

import play.api.Play.current
...
Play.application.configuration.getString("your.key")

игры 2.2 и +

import play.api.Play.current
...
current.configuration.getString("your.key")

используя Typesafe config

import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");

С Play 2.4 and + для доступа к конфигурациям лучше использовать инъекцию зависимостей:

import play.Configuration;
import javax.inject.Inject;


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");

поскольку Play 2 использует библиотеку конфигурации Typesafe, я получил доступ к своим vars в приложении.конф вот так:

ConfigFactory.load().getString("my.var");

в игре java это:

import play.Play;
...
Play.application().configuration().getString("key")

использовать следующим образом (проверено в игре 1.2.5)

${play.configuration.getProperty('my.var')}

где мой.ВАР должен быть указан в заявке.conf file

в качестве ссылки для доступа к нему из шаблона (для play

play.configuration['your.key']

как люди упомянули, Play.application.configuration больше не существует.

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

import play.api.Play.current
...
current.configuration.getString("key")

В Игре 1.2.x

import play.Play;
...


String version  = Play.configuration.getProperty("application.version.number", "1.1.1");

где второй параметр является значением по умолчанию

импортировать этот

import com.typesafe.config.Config;

и напишите ниже строки

private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");