使用Play从Java类访问application.conf属性! 2.0
我想添加一个对象到全局范围,为了构造它,我需要将它传递给一个文件的path。 我不想在源代码中对文件path进行硬编码,所以我想从application.conf中获取这个path。
问题是我不知道如何从java类访问这些属性。 我试过这个:
Configuration.root().getString("file.path")
但是它以NullPointerException结束。
我错了,假设有一个全局的configuration实例,我可以使用? 谢谢。
尝试Play.application().configuration().getString("your.key")
正如评论(nico_ekito)所述,请使用play.Play
而不是play.api.Play
。 play.api.Play
是scala控制器(参见Marcus biesior Biesioroff的评论)
另外,play使用https://github.com/typesafehub/config ,这样也可以提供一些见解。
即使看起来很简单,下面是从configuration文件中获取属性的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")
使用Typesafeconfiguration
import com.typesafe.config.ConfigFactory ... ConfigFactory.load().getString("your.key");
从Play 2.4 and +
,最好使用dependency injection来访问configuration:
import play.Configuration; import javax.inject.Inject; @Inject private Configuration configuration; ... String value = configuration.getString("your.key");
由于Play 2使用Typesafeconfiguration库,所以我在application.conf中访问了我的vars,如下所示:
ConfigFactory.load().getString("my.var");
使用如下(testing在播放1.2.5)
${play.configuration.getProperty('my.var')}
其中my.var应该在application.conf文件中指定
在玩java的时候是:
import play.Play; ... Play.application().configuration().getString("key")
作为从模板访问它的参考(用于播放<2)
play.configuration['your.key']
正如人们已经提到的, Play.application.configuration
不再存在。
在Play Scala 2.3.x中,要从conf/application.conf
读取值,可以执行以下操作:
import play.api.Play.current ... current.configuration.getString("key")
在Play 1.2.x中
import play.Play; ... String version = Play.configuration.getProperty("application.version.number", "1.1.1");
第二个参数是默认值