在Trait中播放2.5替换current.injector

时间:2016-04-26 14:02:16

标签: scala playframework

我正在将我的应用程序迁移到Play 2.5,我遇到以下问题:

import play.modules.reactivemongo.ReactiveMongoApi

trait Foo {
  override def reactiveMongoApi: ReactiveMongoApi = current.injector.instanceOf[ReactiveMongoApi]
  ...
}
object Foo extends Foo

由于current现已弃用,我想替换它。但是,我不能使用@Inject() (val reactiveMongoApi: ReactiveMongoApi)因为我在特质中。 我该怎么办呢?

1 个答案:

答案 0 :(得分:3)

您可以这样做:

import play.modules.reactivemongo.ReactiveMongoApi

trait Foo {
  def reactiveMongoApi: ReactiveMongoApi

  // other methods
}

@Singleton
class FooClass @Inject()(reactiveMongoApi: ReactiveMongoApi) extends Foo {
    // other methods
}

注意FooClassreactiveMongoApi)中的属性名称与特征Foo中定义的方法的匹配方式。之后,您可以declare a module to provide the correct bindings