自Play 2.5.0起,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
已弃用。 Slick的Play.current
需要DatabaseConfigProvider.get[JdbcProfile]
对象,该对象过去由play.api.Application
提供。有什么其他方法可以获得Play.current
play.api.Application
对象,当我们需要在Play控制器外部使用Slick时,比如说ActionBuilders吗?
答案 0 :(得分:2)
注入DatabaseConfigProvider
您正在使用通过全局搜索的DatabaseConfig ,例如
val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
...
val dbConfig = DatabaseConfigProvider.get[JdbcProfile]("<db-name>")(Play.current)
使用 DatabaseConfig通过依赖注入(使用play 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]
...
}