Доступ к свойствам application.conf из класса java с помощью Play! 2,0
Я хочу добавить объект в глобальную область, и для его построения мне нужно передать ему путь к файлу.
Я не хочу жестко кодировать путь к файлу в источнике, поэтому я хочу получить этот путь из application.conf.
Проблема в том, что я не знаю, как получить доступ к этим свойствам из класса java.
Я пробовал это:
Configuration.root().getString("file.path")
Но это заканчивается исключением NullPointerException.
Я ошибаюсь, полагая, что существует глобальный экземпляр конфигурации, который я могу использовать?
Спасибо.
Ответы
Ответ 1
Попробуйте Play.application().configuration().getString("your.key")
Как отмечено в комментарии (nico_ekito), используйте play.Play
, а не play.api.Play
. play.api.Play
для scala контроллеров (см. комментарий Маркуса biesior Biesioroff)
Кроме того, воспроизведение использует https://github.com/typesafehub/config под капотом, поэтому оно также может предоставить некоторые идеи.
Ответ 2
Даже если это кажется простым, вот scala способ получить свойства из файла конфигурации:
Воспроизвести 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")
Использование конфигурации configafe
import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
Ответ 3
В Play 2.4 and +
лучше использовать инъекцию зависимостей для доступа к конфигурациям:
import play.Configuration;
import javax.inject.Inject;
@Inject
private Configuration configuration;
...
String value = configuration.getString("your.key");
Ответ 4
Так как Play 2 использует конфигурационную библиотеку Typesafe, я обратился к моим vars в application.conf следующим образом:
ConfigFactory.load().getString("my.var");
Ответ 5
Использовать следующим образом (Протестировано в Play 1.2.5)
${play.configuration.getProperty('my.var')}
где my.var должен быть указан в файле application.conf
Ответ 6
В игре java есть:
import play.Play;
...
Play.application().configuration().getString("key")
Ответ 7
В качестве ссылки для доступа к нему из шаблона (для воспроизведения < 2)
play.configuration['your.key']
Ответ 8
Как уже упоминалось, Play.application.configuration
больше не существует.
В Play Scala 2.3.x, чтобы прочитать значение из conf/application.conf
, вы можете сделать следующее:
import play.api.Play.current
...
current.configuration.getString("key")
Ответ 9
В Play 1.2.x
import play.Play;
...
String version = Play.configuration.getProperty("application.version.number", "1.1.1");
где второй параметр является значением по умолчанию