在Scala中使用构造函数注入为Play Framework中的控制器注入多个依赖项的正确方法是什么(2.4.x,它提供了基于guice的DI开箱即用)?
例如,
class ExampleController @Inject() (serviceOne: ServiceOne, serviceTwo: ServiceTwo) extends Controller {
}
上面不会编译说只能注入一个或没有构造函数arg。
无法找到有关如何使其正常工作的任何好的参考资料。任何帮助表示赞赏。感谢。
答案 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]
)
}