2016-08-23 19 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クラスでアプリケーションを注入しますそれをeedしてください。それがコントローラ内にあるとします。

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のグローバル状態から依存性注入への移行に焦点を当てています。したがって、これらの静的メソッドを削除します。まだこれを理解していなければ、心配しないでください。ここ

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

} 
この構成エントリ(application.confまたはアプリケーションの.confにインポート別のファイルのいずれかを仮定

プリント: -

some value 
+0

あなたは設定ファイルに自分のデータを追加しなければならないと言っていますか? –

1

セーラムは、特定のユースケースの例を示しました。このpostでは、依存関係注入の詳細な説明をPlayで見つけることができます。

このpostは、Play 2.5への移行です。

私はこれがあなたに役立つことを願っています。