使用Play从java类访问application.conf属性!2
我想向全局作用域添加一个对象,为了构造它,我需要向它传递一个文件路径。 我不想在源代码中硬编码文件路径,因此我想从application.conf获取该路径 问题是我不知道如何从java类访问这些属性。 我试过这个:使用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
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.2Play.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");