Play.application()的替代方法是什么

时间:2016-08-23 12:19:39

标签: java playframework playframework-2.5

我是Play框架的新手。我想读取conf文件夹中的文件。所以我用了
Play.application().classloader().getResources("Data.json").nextElement().getFile()

但我知道play.Play现在已被弃用了。我可以用什么来读取文件。 我看过this文章,很难理解它的内容。

4 个答案:

答案 0 :(得分:3)

只需在您需要的类中注入Application。假设它在控制器中:

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");    
    }
}

答案 1 :(得分:1)

您阅读的2.5迁移文章重点介绍Play从全局状态迁移到依赖注入作为连接依赖关系的方法 - 因此删除了这些静态方法。如果你还没有真正理解这一点,那就别担心了。

假设这个配置条目(在application.conf中或导入到应用程序.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

答案 2 :(得分:1)

Salem为您提供了一个特定用例的示例。在这个post中,您可以在Play中找到有关依赖注入的更详细说明。

post是关于迁移到Play 2.5的。

我希望这会对你有所帮助。

答案 3 :(得分:0)

注入Application无效,因此我必须注入Environment,然后致电environment.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");
     }
}

播放有关应用程序界面的文档: https://www.playframework.com/documentation/2.6.9/api/java/play/Application.html