2016-12-02 20 views
1

Play Slick documentation陳述可以通過全局查找得到DatabaseConfig對象:播放油滑全局查找設置棄用消息

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

但是我得到以下彙編警告,指出current已被廢棄,我應該用DI代替:

[警告] C:\ MyApp的\應用\測試\ Test.scala:28:方法在對象播放 電流被棄用:這是一個靜態參考 應用,使用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

無論是實際注入Play應用程序(和它傳遞的參數爲你所做的那樣)或更好,注入DatabaseConfigProvider本身 - 這種方式將不再需要申請:

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

我可以從多個線程訪問dbConfig(您在Singleton中定義的那個)嗎?在這種情況下如何管理併發性? – ps0604

+0

我想大多數時候你用'DbConfig'完成的工作基本上都是從數據庫中獲取'db'(它總是需要線程安全的)。 'db'字段只是'val'裏面,所以它應該是安全的。 –