Сообщение об устаревшей установке Play Slick Global Lookup

Как указано в документации Play Slick в файле DatabaseConfig объект можно получить через Global Lookup:

val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)

Однако я получаю следующее предупреждение компиляции о том, что current устарел и вместо этого я должен использовать DI:

[предупреждение] C:\myapp\app\test\Test.scala:28: текущий метод в объекте Play устарел: это статическая ссылка на приложение, вместо этого используйте DI

Должен ли я использовать DI вместо глобального поиска? С предупреждением об устаревании соединение с базой данных работает нормально.


person ps0604    schedule 02.12.2016    source источник
comment
Play.current будет удалено с игрой 2.6   -  person rethab    schedule 02.12.2016
comment
Как мне использовать глобальный поиск?   -  person ps0604    schedule 02.12.2016
comment
Я предполагаю, что это идет в том же направлении: title="scala play framework slick akka db access от akka acter"> stackoverflow.com/questions/40804275/   -  person rethab    schedule 02.12.2016
comment
Я не использую актеров akka. Я вынужден использовать инъекцию?   -  person ps0604    schedule 02.12.2016
comment
Вы вынуждены пройти в ссылке так или иначе. Внедрение зависимостей — это один из способов.   -  person rethab    schedule 02.12.2016


Ответы (1)


Либо внедрите на самом деле приложение Play (и передайте его как параметр, как вы это сделали), либо, лучше, введите само DatabaseConfigProvider - таким образом ему не понадобится приложение:

@Singleton
class DbAccessPlayConfig @Inject()(dbConfigProvider: DatabaseConfigProvider) {
  val dbConfig = dbConfigProvider.get[JdbcProfile]
}
person Paul Dolega    schedule 02.12.2016
comment
Могу ли я получить доступ к dbConfig (тот, который вы определили в Singleton) из нескольких потоков? как в этом случае управлять параллелизмом? - person ps0604; 02.12.2016
comment
Я думаю, что вы делаете с DbConfig в большинстве случаев, в основном получаете из него db (что в любом случае должно быть потокобезопасным). Поле db просто val внутри, поэтому оно должно быть безопасным. - person Paul Dolega; 02.12.2016