2016-08-23 46 views
2

我是Play框架的新手。我想读取conf文件夹中的文件。所以我用

Play.application().classloader().getResources("Data.json").nextElement().getFile()

但我知道play.Play现在已被弃用。我可以用什么来读取文件。 我读this文章,很难理解它说什么。Play.application有什么替代方法()

+1

你正在使用哪个版本?您已经用v2.3标记了帖子,但play.Play在2.5 – Nio

+0

中已弃用@Nio非常感谢您。我纠正了它。我正在使用2.5 –

回答

3

这里您将n刚注入的类中的应用去掉它。假设它在一个控制器中:

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

它的工作。我想我必须了解依赖注入来知道实际发生了什么。 –

+0

任何人都可以向我展示找到这种解决方案的正确途径。因为反复阅读文件对我没有帮助。 –

1

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

假设此配置条目(在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 
+0

您是否在说我必须将我的数据添加到配置文件中? –

1

塞勒姆举了一个特定用例的例子。在此post中,您可以在Play中找到依赖注入的更详细的解释。

而这post是关于迁移到Play 2.5。

我希望这会帮助你。

相关问题