我正在将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和因此应该是快速的而不是阻塞的。