我有一个关于从自定义配置文件加载属性的问题。我试过了
加载oauth.properties
文件的两种不同方法,但我不能
要么上班,所以我希望有人可以帮助我。
我尝试的第一种方法是将文件添加到conf目录中 并据此引用它:
String oauthPropertiesFile = ClassLoader.getSystemResource("oauth.properties").getFile();
但刚刚返回NULL
。
我尝试的第二种方法是添加:
@include.oauthProperties = oauth.properties
到application.conf
文件然后引用它
我的控制器如:
String clientId = oauthProperties.clientId;
但是这不能编译。
有人能说清楚我在这里做错了吗?
答案 0 :(得分:16)
使用/conf
中的文件对我有用:
import com.typesafe.config.ConfigFactory
val myConfig = ConfigFactory.load("myfile.properties").getConfig("my.config.prefix")
答案 1 :(得分:12)
我不确定conf是否是classpath的一部分。所以我会尝试/conf/oauth.properties
或将文件放入类路径中。此外,您应该使用Play.application.classloader()
而不是Classloader。
关于包含:我仍然认为您需要致电Play.application().configuration().get("clientID");
要分析情况,您可以使用-Dconfig.trace=loads
启动应用,并使用Play.application().configuration().root().render()
分析配置。
希望这会给你足够的提示,以便你可以解决问题。
答案 2 :(得分:6)
在一般情况下,要从" / conf"中获取任何文件。目录,使用Play 2.2,它可以按如下方式完成(注意" / conf"在类路径上,所以你不应该包括它。)
Play.application().classloader().getResource("any_file");
答案 3 :(得分:-2)
如果您想使用scala.io.Source
,您还可以执行类似
Source.fromFile(Play.getFile("path-in-your-play-project"))