2016-08-23 5 views
2

Я новичок в Play framework. Я хотел прочитать файл, который находится в папке 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

Просто инъекционные приложения в классе, где п это. Предположим, что он находится в контроллере:

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

В статье о миграции, которую вы читаете, сосредоточена на миграции Play из глобального состояния в Injection Dependency как средство для подключения зависимостей - следовательно, удаление этих статических методов. Если вы еще этого не понимаете, тогда не беспокойтесь.

Предполагая эту запись конфигурации (или в 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

Salem предоставил вам пример для конкретного прецедента. В этом post вы можете найти более подробное объяснение инъекции зависимостей в Play.

И это post о миграции для воспроизведения 2.5.

Надеюсь, это поможет вам.

Смежные вопросы