gpt4 book ai didi

scala - 带有 Play2.4 和 scala 的 Google Guice 的循环依赖错误

转载 作者:行者123 更新时间:2023-12-04 18:38:00 26 4
gpt4 key购买 nike

我的应用程序使用 使用 Scala 2.11 玩 2.4 .我开始转换我现有的代码以使用谷歌Guice Play 2.4 附带的。

当我在进行第一组更改后运行我的代码时,我发现我的代码中的一些 DAO 失败了 循环依赖错误。

例如我有两个 DAO

class BookDAO @Inject()
(protected val personDAO : PersonDAO,
@NamedDatabase("mysql")protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] {
...
...
val personId = //some id
personDAO.get(personId)
}

class PersonDAO @Inject()
(protected val bookDAO : BookDAO,
@NamedDatabase("mysql")protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] {
...
...
val bookName= //some id
personDAO.getByName(bookName)
}

尝试访问 BookDAO 或 PersonDAO 时出现以下错误
Tried proxying schema.BookDAO to support a circular dependency, but it is not an interface.
at schema.BookDAO.class(Books.scala:52)
while locating schema.BookDAO

有人可以帮我解决这个错误。

提前致谢

最佳答案

快速解决方案

注入(inject) Provider反而:

class BookDAO @Inject()(personDaoProvider: Provider[PersonDAO], ...)
extends HasDatabaseConfigProvider[JdbcProfile] {
val personDAO = personDaoProvider.get
def person = personDAO.get(personId)
}
BookDAO 也是如此.这将开箱即用。 Guice 已经“知道”如何注入(inject) Providers。

更好的方法

将类定义与实现分离。见蒙卡拉马里的回答。

关于scala - 带有 Play2.4 和 scala 的 Google Guice 的循环依赖错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31139719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com