没有绑定play.api.db.slick.DatabaseConfigProvider的实现

Bla*_*man 6 scala playframework slick

我无法流畅地使用Play 2.5.x

我收到以下运行时错误:

ProvisionException: Unable to provision, see the following errors:

1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound.
  while locating play.api.db.slick.DatabaseConfigProvider
Run Code Online (Sandbox Code Playgroud)

我的DAO看起来像:

@Singleton
class UserDAO @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) 
extends HasDatabaseConfigProvider[JdbcProfile] {
    import driver.api._

...

}
Run Code Online (Sandbox Code Playgroud)

我只是将其注入到控制器中,例如:

@Singleton
class UserController @Inject() (ws: WSClient, cache: CacheApi, userDAO: UserDAO) extends Controller {
...
}
Run Code Online (Sandbox Code Playgroud)

build.sbt

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  cache,
  ws,
  "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.1" % Test,
  // database
  jdbc,
  "org.postgresql"     %  "postgresql" % "9.3-1102-jdbc41",
  "com.typesafe.play" %% "play-slick" % "2.0.0"
)
Run Code Online (Sandbox Code Playgroud)

我的application.conf具有:

play.db {
  # The combination of these two settings results in "db.default" as the
  # default JDBC pool:
  #config = "db"
  #default = "default"

  # Play uses HikariCP as the default connection pool.  You can override
  # settings by changing the prototype:
  prototype {
    # Sets a fixed JDBC connection pool size of 50
    #hikaricp.minimumIdle = 50
    #hikaricp.maximumPoolSize = 50
  }
}

## JDBC Datasource
db {
  default.driver = org.postgresql.Driver
  default.url = "jdbc:postgresql://localhost/testdb_development"
  default.username = "blankman"
  #default.password = ""
}
Run Code Online (Sandbox Code Playgroud)

如果更改数据库名称,则会出现连接错误,因此该池正确地获取了我的配置设置。

Mir*_*tta 3

我在你的 application.conf 中发现的一个问题是它缺少 play-slick 特定的配置键。事实上,您应该从 application.conf 中删除db部分,并将其替换为slick.dbs,如https://www.playframework.com/documentation/2.5.x/PlaySlick#database-configuration中所示

您可能想要做的另一件事是从 sbt 构建文件中删除jdbc依赖项,据我所知(基于 Play 2.4.x),您不能在同一个 Play 项目上同时使用 play-slick 和 jdbc。

我绝对建议您阅读 Play-Slick 文档,以更好地了解它的工作原理。

希望这可以帮助!