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

Posted

技术标签:

【中文标题】使用 Play 从 java 类访问 application.conf 属性! 2.0【英文标题】:Accessing the application.conf properties from java class with Play! 2.0 【发布时间】:2012-04-08 07:55:05 【问题描述】:

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

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

Configuration.root().getString("file.path")

但它以 NullPointerException 结束。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

Play.application() 不存在了:/ 小心导入,你使用play.Play而不是play.api.Play @nightograph 你能详细说明一下吗?我刚刚创建了一个全新的 2.0 java 项目,添加了以下行 'String key = Play.application().configuration().getString("key");返回 ok(index.render(key));'并在 conf 文件中添加了一个密钥。我得到了 conf 文件中的文本值。 @nightograph,这是个好消息,我担心情况会更糟 :) 小心,每个以 play.api 开头的类都用于 Scala 控制器。 Play.application() 现在已弃用。所以更新答案会很好。【参考方案2】:

即使看起来很简单,这里是 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")

使用 Typesafe 配置

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

【讨论】:

谢谢,我用的是java而不是scala 为什么不能使用current Play.current.configuration.getString("your.key") 似乎是 Play 2.2.2 中的方式【参考方案3】:

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

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


@Inject
private Configuration configuration;

...

String value = configuration.getString("your.key");

【讨论】:

由于 Play 2.6.0 配置已弃用,您需要改为注入 com.typesafe.config.Config。【参考方案4】:

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

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

【讨论】:

是的!这种变体比其他变体要好得多。它也适用于过滤器(在全局对象初始化之前)。 注意这会加载默认配置文件,但是如果你之后在 Global 中加载了其他文件(例如 application.dev.conf),则不会被考虑在内。发现困难的方式:(【参考方案5】:

在剧中java是:

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

【讨论】:

【参考方案6】:

如下使用(在 Play 1.2.5 中测试)

$play.configuration.getProperty('my.var')

应在 application.conf 文件中指定 my.var 的位置

【讨论】:

我正在寻找那个 +1 正是我想要的 +1【参考方案7】:

作为从模板访问它的参考(用于播放

play.configuration['your.key']

【讨论】:

【参考方案8】:

正如人们所说,Play.application.configuration 不再存在。

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

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

【讨论】:

【参考方案9】:

在 Play 1.2.x 中

import play.Play;
...


String version  = Play.configuration.getProperty("application.version.number", "1.1.1");

其中第二个参数是默认值

【讨论】:

【参考方案10】:

导入这个

import com.typesafe.config.Config;

并写下以下几行

private Config config;
this.config = ConfigProvider.config();
String value = this.config.getString("fieldFromConfigFile");

【讨论】:

【参考方案11】:

import play.Play; String myVal = Play.configuration.getProperty("your.key").toString();

我在我的应用程序中使用它并且它有效

别忘了导入 play.Play。希望对你有所帮助

【讨论】:

【参考方案12】:

从 2.5 版本开始请使用 play.Application 类,该类应该被注入然后 application.config().getString("your.property.here")

【讨论】:

【参考方案13】:

对于 Java Playframework:

Application.conf 中,你可以这样写:

email="example@gmail.com.pe"

某类:

导入播放。播放;

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

【讨论】:

以上是关于使用 Play 从 java 类访问 application.conf 属性! 2.0的主要内容,如果未能解决你的问题,请参考以下文章

从play框架1.2.4远程访问mysql数据库

在 Java Play 应用中启用 CORS 过滤器

启动没有 DB 的 Java/Play2.5 REST API

play2 有选择地覆盖 application.conf 中运行任务的设置

如何从 Play 中删除所有默认解析器!应用?

如何使用 Play! 访问开发数据库!框架?