Play Framework:在控制器中使用构造函数注入注入多个依赖项

时间:2015-07-19 23:00:59

标签: scala playframework dependency-injection

在Scala中使用构造函数注入为Pla​​y Framework中的控制器注入多个依赖项的正确方法是什么(2.4.x,它提供了基于guice的DI开箱即用)?

例如,

class ExampleController @Inject() (serviceOne: ServiceOne, serviceTwo: ServiceTwo) extends Controller {
}

上面不会编译说只能注入一个或没有构造函数arg。

无法找到有关如何使其正常工作的任何好的参考资料。任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

您可能需要在val前加上参数:

class ExampleController @Inject() (val serviceOne: ServiceOne, val serviceTwo: ServiceTwo) extends Controller {

并检查您是否有正确的导入:

import javax.inject.Inject

Here你也可以找到一个有多个依赖关系的例子,也许它有帮助。

答案 1 :(得分:-1)

您的代码是正确的。除此之外,您还需要在module

中配置application.conf
play.modules.enabled += "com.example.HelloModule"

然后在这个非常Module中你需要描述你的依赖注入类:

import play.api.inject._

class HelloModule extends Module {
  def bindings(environment: Environment,
               configuration: Configuration) = Seq(
    bind[Hello].qualifiedWith("en").to[EnglishHello],
    bind[Hello].qualifiedWith("de").to[GermanHello]
  )
}

For the offical documentation see this link.