postgresql - 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 Dependencyorg.postgresql" % "postgresql" % "9.4-1206-jdbc42
。在这里为所有三个尝试添加了日志。
解决方案
您可以使用play.api.db.DBApi
,例如:
class DatabaseService @Inject()(dbApi: DBApi)
(implicit ec: DatabaseExecutionContext) {
lazy val database = dbApi.database("default")
...
}
推荐阅读
- web-services - 我们如何在 OpenTest 中进行使用 formdata 而不是 json 的 POST 服务调用?
- geoserver - 在 QGIS 中发送 WMS GetMAP API 请求时获取主机需要身份验证
- python-3.x - 如何使用带有自定义身份验证的 docker 设置 pypiserver?
- couchbase - couchbase 索引未创建
- asp.net-mvc - 从客户端调用时,IdentityServer 令牌返回 UnAuthorized
- typescript - 在联合类型上使用属性
- java - 如何在 onPostExecute 方法之外使用变量?
- arrays - 如何用相关数组定义 foreach 循环?
- reactjs - 如何给元素一个唯一的 id 以在 className 中使用它?
- php - 即使凭据在 laravel 登录中完全正确,也无法登录