使用Play从java类访问application.conf属性!2.0

Nit*_*mer 60 java configuration playframework playframework-2.0

我想将一个对象添加到全局范围,为了构造它,我需要将它传递给文件的路径.我不想在源代码中硬编码文件路径,因此我想从application.conf获取该路径.

问题是我不知道如何从java类访问这些属性.我试过这个:

Configuration.root().getString("file.path")
Run Code Online (Sandbox Code Playgroud)

但它以NullPointerException结束.

假设我可以使用全局配置实例,我错了吗?谢谢.

Nas*_*sir 81

尝试 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,因此它也可以提供一些见解.

  • `Play.application()`不再存在:/ (5认同)
  • 小心导入,你使用`play.Play`而不是`play.api.Play`? (5认同)
  • Play.application()现已弃用.所以更新答案会很好. (3认同)

i.a*_*iel 52

即使看起来很简单,这里是从配置文件中获取属性的scala方法:

播放2.0和2.1:

import play.api.Play.current
...
Play.application.configuration.getString("your.key")
Run Code Online (Sandbox Code Playgroud)

玩2.2和+

import play.api.Play.current
...
current.configuration.getString("your.key")
Run Code Online (Sandbox Code Playgroud)

使用Typesafe配置

import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");
Run Code Online (Sandbox Code Playgroud)


Sae*_*fam 37

Play 2.4 and +最好使用依赖注入来访问配置:

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


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");
Run Code Online (Sandbox Code Playgroud)

  • 由于不推荐Play 2.6.0配置,您需要注入com.typesafe.config.Config. (2认同)

Cyr*_* N. 12

由于Play 2使用Typesafe配置库,我在application.conf中访问了我的vars,如下所示:

ConfigFactory.load().getString("my.var");
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将加载默认配置文件,但如果您在Global中加载了其他文件(例如,application.dev.conf),则不会将其考虑在内.发现困难的方式:( (6认同)