2017-02-24 27 views
0

從播放2.5.0起,Play.current已被棄用。 Slick的DatabaseConfigProvider.get[JdbcProfile]需要play.api.Application對象,它以前由Play.current提供。當我們需要在Play控制器外面使用Slick時,有沒有其他方法可以獲得play.api.Application對象DatabaseConfigProvider.get[JdbcProfile],請說ActionBuilders?播放當前和光滑的DatabaseConfig訪問播放控制器外

回答

2

注入DatabaseConfigProvider

您通過全局查找使用DatabaseConfig,像

val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current) 
... 
val dbConfig = DatabaseConfigProvider.get[JdbcProfile]("<db-name>")(Play.current) 

同樣可以用DatabaseConfig通過依賴注入(與發揮2.5.X)來完成:

class Application @Inject()(dbConfigProvider: DatabaseConfigProvider) extends Controller { 
val dbConfig = dbConfigProvider.get[JdbcProfile] 
... 
class Application2 @Inject()(@NamedDatabase("<db-name>") dbConfigProvider: DatabaseConfigProvider) extends Controller { 

如果你想使用它您需要通過那裏注入數據庫配置,或者您可以通過注入器本身,然後從中獲取數據庫配置,如

class UserRepo(implicit inj: Injector) extends HasDatabaseConfig[JdbcProfile] with Injectable { 
    override protected val dbConfig: DatabaseConfig[JdbcProfile] = inject[DatabaseConfigProvider].get[JdbcProfile] 
    ... 
} 
相關問題