【问题标题】:How to inject Database in Play Framework (Scala, Scaldi) if we use specific datasource?如果我们使用特定的数据源,如何在 Play Framework(Scala、Scaldi)中注入数据库?
【发布时间】:2017-05-07 05:43:17
【问题描述】:

我想在我的游戏框架项目中使用 Anorm 作为 DB 库和 Scaldi 作为 DI。但是现在我无法注入数据库,因为在最新的游戏框架中,我们不能再使用 DB.getConnection("datasource") 了。

你们中的任何人都可以解释如何将 NamedDatabase 转换为 scaldi 环境吗?

顺便说一句,这是我的代码片段如何在 play scala 中使用 NamedDatabase。

class MembershipSqlStorage @Inject() (@NamedDatabase("membership") db: Database)

它有效。

谢谢

【问题讨论】:

  • 解决了! lazy val database = inject[DBApi].database("membership")

标签: database dependency-injection playframework scaldi


【解决方案1】:

PlayFramework 为 Anorm DB 库 Scaldi DI 提供了有用的文档。

你可以参考:

https://www.playframework.com/documentation/2.6.x/Tutorials

https://www.playframework.com/documentation/2.6.x/PlaySlick

您需要将 Anorm 和 JDBC 插件添加到您的依赖项中:

libraryDependencies ++= Seq( 数据库, “com.typesafe.play”%%“异常”%“2.5.1” )

首先,

"导入异常._"

然后简单地使用 SQL 对象来创建查询。您需要一个 Connection 来运行查询,您可以在 DI 的帮助下从 play.api.db.DB 助手中检索一个 -

database.withConnection { 隐式 c =>

val 结果:Boolean = SQL("Select 1").execute()

}

要在 play 应用程序中添加 Scaldi 支持,您需要在 build.sbt 中包含 scaldi-play:

libraryDependencies += "org.scaldi" %% "scaldi-play" % "0.5.15"

还有https://github.com/playframework/anorm

【讨论】:

  • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
相关资源
最近更新 更多