Доступ к свойствам application.conf из класса Java с помощью Play!2,0 - PullRequest
57 голосов
/ 23 марта 2012

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

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

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

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

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

Ответы [ 12 ]

80 голосов
/ 24 марта 2012

Попробуйте Play.application().configuration().getString("your.key")

Как отмечено в комментарии (nico_ekito), пожалуйста, используйте play.Play, а не play.api.Play. play.api.Play для контроллеров scala (см. Комментарий Marcus biesior Biesioroff)

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

52 голосов
/ 10 мая 2012

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

Play 2.0 и 2.1 :

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

Play 2.2 и +

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

Использование конфигурации Typesafe

import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
37 голосов
/ 26 января 2016

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

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


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");
12 голосов
/ 25 июня 2012

Поскольку Play 2 использует библиотеку настроек Typesafe, я получил доступ к своим файлам в файле application.conf следующим образом:

ConfigFactory.load().getString("my.var");
3 голосов
/ 28 сентября 2014

В пьесе Ява есть:

import play.Play;
...
Play.application().configuration().getString("key")
2 голосов
/ 17 июля 2014

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

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

, где my.var должен быть указан в файле application.conf

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

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

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

import play.api.Play.current
...
current.configuration.getString("key")
1 голос
/ 11 декабря 2012

Как ссылка для доступа к нему из шаблона (для игры <2) </p>

play.configuration['your.key']
0 голосов
/ 19 февраля 2019

Начиная с версии 2.5, пожалуйста, используйте класс play.Application, который необходимо ввести, а затем application.config().getString("your.property.here")

0 голосов
/ 18 октября 2018

import play.Play; String myVal = Play.configuration.getProperty("your.key").toString();

Я использую это в моем приложении, и оно работает

Не забудьте импортировать play.Play. Надеюсь, это поможет вам

...