我正在将Scala Play应用程序迁移到2.5,目前正在将组件迁移到依赖项注入(inject)。不过,还有一个地方我不知所措。我在伴随对象中定义了PathBindable隐式转换:

object Task {
  implicit def pathBindable(implicit stringBinder: PathBindable[String]) =
    new PathBindable[Task] {
       ...
    }
}

PathBindable的实现需要从存储库中查找对象,但是我还没有找到一种在此处依赖注入(inject)存储库的方法。解决方法是,使用现在不建议使用的Play对象:
val tasks = Play.application(Play.current).injector.instanceOf[TasksRepository]

任何想法如何正确解决这个问题?

最佳答案

According to Lightbend Engineer Greg Methvin,PathBindables应该仅取决于路径中的状态。原因是代码runs on the IO thread和因此应该是快速的而不是阻塞的。

08-18 06:00