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

使用Play从java类访问application.conf属性!2,java,configuration,playframework,playframework-2.0,Java,Configuration,Playframework,Playframework 2.0,我想向全局作用域添加一个对象,为了构造它,我需要向它传递一个文件路径。 我不想在源代码中硬编码文件路径,因此我想从application.conf获取该路径 问题是我不知道如何从java类访问这些属性。 我试过这个: Configuration.root().getString("file.path") 但它以NullPointerException结束 我假设有一个全局配置实例可以使用,这是错误的吗? 谢谢。试试Play.application().configuration().getSt

我想向全局作用域添加一个对象,为了构造它,我需要向它传递一个文件路径。 我不想在源代码中硬编码文件路径,因此我想从application.conf获取该路径

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

Configuration.root().getString("file.path")
但它以NullPointerException结束

我假设有一个全局配置实例可以使用,这是错误的吗? 谢谢。

试试
Play.application().configuration().getString(“您的.key”)

如评论(nico_ekito)所述,请使用
play.play
而不是
play.api.play
play.api.play
用于scala控制器(参见Marcus biesior Biesioroff的评论)


此外,play在引擎盖下使用,因此也可以提供一些见解

即使看起来很简单,下面是从配置文件获取属性的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")
使用类型安全配置

import com.typesafe.config.ConfigFactory
...
ConfigFactory.load().getString("your.key");

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

ConfigFactory.load().getString("my.var");

作为从模板访问它的参考(对于播放<2)

按照以下要求使用(在第1.2.5节中测试)

在播放java时,应在application.conf文件中指定my.var的位置是:

import play.Play;
...
Play.application().configuration().getString("key")

正如大家提到的,
Play.application.configuration
不再存在

在Scala 2.3.x中,要从
conf/application.conf
读取值,可以执行以下操作:

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

播放2.4和+
中,最好使用依赖项注入来访问配置:

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


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");
游戏中的1.2.x

import play.Play;
...


String version  = Play.configuration.getProperty("application.version.number", "1.1.1");
其中第二个参数是默认值

导入此

import com.typesafe.config.Config;
并写下以下几行

private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");
导入play.play;
字符串myVal=Play.configuration.getProperty(“您的.key”).toString()

我在我的应用程序中使用它,它可以正常工作


别忘了导入play.play。希望它能为您提供帮助

从2.5版开始,请使用play.Application类,该类应该被注入,然后
application.config().getString(“your.property.here”)
对于Java Playframework:

Application.conf中,可以放置如下内容:

电子邮件=”example@gmail.com.pe"

某些类别:

输入play.play

String email=Play.application().configuration().getString(“key”)//key->email


谢谢,我使用的是java而不是Scala为什么不能使用
current
Play.current.configuration.getString(“您的.key”)
似乎是Play 2.2.2
Play.application()
不再存在的方式:/小心导入,您是否使用
play.play
而不是
play.api.play
?@nightograph您能详细说明一下吗?我刚刚创建了一个全新的2.0Java项目,添加了以下行'String key=Play.application().configuration().getString(“key”);返回ok(index.render(key));'并在conf文件中添加了一个密钥。我在conf文件中得到了文本值。@nightograph,这是个好消息,我担心这会更糟:)小心点,每个以
play.api
开头的类都是在Scala控制器中使用的。play.application()现在已被弃用。所以更新答案会很好。是的!这种变体比其他变体好得多。它也可以在过滤器中工作(在全局对象初始化之前)。请注意,这将加载默认配置文件,但如果在全局中加载其他文件(例如application.dev.conf),则不会将其考虑在内。找到了困难的方法:(我一直在寻找+1,因为我一直在寻找+1,因为Play 2.6.0配置已被弃用,您需要注入com.typesafe.config.config。
import com.typesafe.config.Config;
private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");