2016-08-23 48 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。

我希望這會幫助你。

相關問題