2012-05-01 4 views
7

У меня возник вопрос о загрузке свойств из настраиваемых файлов конфигурации. Я попробовал два разных подхода к загрузке моего файла oauth.properties, но я не могу получить либо работу, поэтому я надеюсь, что кто-то здесь может мне помочь.Пользовательские файлы конфигурации - Играйте! Framework 2.0

Первый подход, который я попытался было добавить файл в каталог конф и ссылаться на него таким образом:

String oauthPropertiesFile = ClassLoader.getSystemResource("oauth.properties").getFile(); 

Но что только что вернулся NULL.

Второй подход I пытается было добавить:

@include.oauthProperties = oauth.properties 

в файл application.conf и затем ссылаться на него в мой контроллер, как:

String clientId = oauthProperties.clientId; 

Однако это не компилируется.

Может ли кто-нибудь пролить свет на то, что я здесь делаю неправильно?

ответ

12

Я не уверен, что conf является частью пути к классам. Поэтому я бы попробовал /conf/oauth.properties или поместил файл в путь к классам. Кроме того, вы должны использовать Play.application.classloader() вместо Classloader.

О включаемом: Я все еще думаю, что вам нужно позвонить Play.application().configuration().get("clientID");

Для анализа ситуации вы можете запустить приложение с -Dconfig.trace=loads и анализировать конфигурацию с Play.application().configuration().root().render().

Надеюсь, это даст вам достаточно советов, чтобы вы могли решить свою проблему.

16

То, что работало для меня с файлом в /conf:

import com.typesafe.config.ConfigFactory 

val myConfig = ConfigFactory.load("myfile.properties").getConfig("my.config.prefix") 
6

В общем случае, для извлечения какой-либо файл из каталога «/ конф», используя Play 2.2 это можно сделать следующим образом (обратите внимание, что «/ conf» находится в пути к классам, поэтому вы не должны включать его).

Play.application().classloader().getResource("any_file"); 
-2

Если вы хотите использовать scala.io.Source вы также можете сделать что-то вроде

Source.fromFile(Play.getFile("path-in-your-play-project"))