2016-12-02 12 views
1

Как указано в Play Slick documentation объект DatabaseConfig может быть получен с помощью глобального Lookup:Play Slick установки Global Lookup устаревшее сообщение

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

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

[предупредит] C: \ MyApp \ приложение \ Test \ Test.scala: 28: метод тока в объекте Play устарела: Это статическая ссылка на приложения, использование DI вместо

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

+0

'Play.current' будут удалены с игрой 2.6 – rethab

+0

Как использовать глобальный поиск? – ps0604

+0

Я предполагаю, что это идет в том же направлении: http://stackoverflow.com/questions/40804275/scala-play-framework-slick-akka-db-access-from-akka-actor/40804616#40804616 – rethab

ответ

1

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

@Singleton 
class DbAccessPlayConfig @Inject()(dbConfigProvider: DatabaseConfigProvider) { 
    val dbConfig = dbConfigProvider.get[JdbcProfile] 
} 
+0

Могу ли я получить доступ к dbConfig (тот, который вы определили в Singleton) из нескольких потоков? как управлять параллелизмом в этом случае? – ps0604

+0

Я предполагаю, что вы делаете с 'DbConfig' большую часть времени, в основном получаете' db' из него (это должно быть потокобезопасным в любом случае). Поле 'db' просто' val' внутри, поэтому оно должно быть безопасным. –