使用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.Playplay.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"); 

第二个参数是默认值