首页 > 解决方案 > PlayFramework Scala:如何获取默认的 Hikaricp 连接

问题描述

我正在尝试从默认Hikaricp配置获取连接。以下是application.conf

modules {
  enabled += "play.api.db.DBModule"
  enabled += "play.api.db.HikariCPModule"
  enabled += "modules.AppModule"
}
db.default.hikaricp.dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
db.default.hikaricp.dataSource.user=rp
#db.default.hikaricp.dataSource.url="postgres://rp:password@localhost/profile"
db.default.hikaricp.dataSource.password=password
db.default.hikaricp.dataSource.databaseName=profile
db.default.hikaricp.dataSource.serverName=localhost
db.default.hikaricp.connectionTestQuery = "SELECT 1"

由于Play正在维护连接池。现在我找不到在上面创建连接的方法Play。我尝试了以下(1、2、3):

//1. Injecting
import slick.jdbc.PostgresProfile.api._

class DBConnection @Inject()(db: Database) {

}
 // 2. Mentioned here.

object DBConnection {
implicit val db = DatabaseConfigProvider.get[JdbcProfile](Play.current).db
//implicit val db = Database.forConfig("default") (3)
}

如何从default连接池中获取连接?

附加细节: Play Framework 版本:2.16.9
Scala 版本是2.12.6
Postgres Dependency org.postgresql" % "postgresql" % "9.4-1206-jdbc42。在这里为所有三个尝试添加了日志。

标签: postgresqlscalaplayframeworkslick-3.0

解决方案


您可以使用play.api.db.DBApi,例如:

class DatabaseService @Inject()(dbApi: DBApi)
                               (implicit ec: DatabaseExecutionContext) {
   lazy val database = dbApi.database("default")
   ...
}

推荐阅读