使用 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.Play
。 play.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的主要内容,如果未能解决你的问题,请参考以下文章
启动没有 DB 的 Java/Play2.5 REST API