Java Play.application()的替代方案是什么
我是个新手。我想读取conf文件夹中的一个文件。所以我使用了Play.application().classloader().getResources(“Data.json”).nextElement().getFile()Java Play.application()的替代方案是什么,java,playframework,playframework-2.5,Java,Playframework,Playframework 2.5,我是个新手。我想读取conf文件夹中的一个文件。所以我使用了Play.application().classloader().getResources(“Data.json”).nextElement().getFile() 但我知道这出戏,现在这出戏不受欢迎了。我可以用什么来读取文件。 我读了这篇文章,几乎听不懂它在说什么。您读的2.5迁移文章重点介绍了Play从全局状态迁移到依赖项注入,作为连接依赖项的一种手段,因此删除了这些静态方法。如果你还没有真正理解这一点,那么不要担心 假设此配置条
但我知道这出戏,现在这出戏不受欢迎了。我可以用什么来读取文件。
我读了这篇文章,几乎听不懂它在说什么。您读的2.5迁移文章重点介绍了Play从全局状态迁移到依赖项注入,作为连接依赖项的一种手段,因此删除了这些静态方法。如果你还没有真正理解这一点,那么不要担心 假设此配置条目(在application.conf或导入application.conf的其他文件中):-
my_conf_key = "some value"
以下是使用2.5查找配置属性的示例:-
import play.api._
import play.api.mvc._
import javax.inject.Inject
class TestConf @Inject() (conf: Configuration) extends Controller {
def config = Action {
Ok(conf.underlying.getString("my_conf_key"))
}
}
印刷品:-
some value
只需将应用程序注入到需要的类中。假设它位于控制器中:
import play.Application;
import javax.inject.Inject;
import javax.inject.Provider;
class YourController extends Controller {
@Inject
Provider<Application> app;
public Result someMethod() {
// (...)
// File is placed in conf/Data.json
InputStrem is = app.get().classloader().getResourceAsStream("Data.json");
String json = new BufferedReader(new InputStreamReader(is))
.lines().collect(Collectors.joining("\n"));
return ok(json).as("application/json");
}
}
导入play.Application;
导入javax.inject.inject;
导入javax.inject.Provider;
类YourController扩展控制器{
@注入
提供商应用程序;
公共结果方法(){
// (...)
//文件放在conf/Data.json中
InputStrem is=app.get().classloader().getResourceAsStream(“Data.json”);
String json=new BufferedReader(新的InputStreamReader(is))
.lines().collect(收集器.连接(“\n”);
返回ok(json).as(“应用程序/json”);
}
}
Salem为您提供了一个特定用例的示例。在这个示例中,您可以找到有关依赖项注入的更详细解释
这是关于迁移到游戏2.5
我希望这将对您有所帮助。注入
应用程序
无效,因此我必须注入环境
,然后调用环境.resource(“resource.xsd”);
例如:
import javax.inject.Inject;
public class ExampleResource extends Controller{
private final Environment environment;
@Inject
public ExampleResource(Environment environment){
this.environment = environment;
}
public void readResourceAsStream() {
InputStream resource = environment.resourceAsStream("data.xsd");
// Do what you want with the stream here
}
public void readResource(){
URL resource = environment.resource("data.xsd");
}
}
播放有关应用程序界面的文档:
您使用的是哪个版本?您已经用v2.3为帖子添加了标签,但是play.play在2中被弃用了。5@Nio非常感谢。我更正了。我正在使用2.5。你是说我必须将数据添加到配置文件中吗?它正在工作。我想我必须了解依赖注入,才能知道实际发生了什么。有人能给我一个正确的p吗我很想找到这样的解决方案,因为反复阅读文档对我一点帮助都没有。