了解Play 2.4依赖注入

时间:2015-07-19 13:56:35

标签: java playframework dependency-injection guice playframework-2.4

我有一些问题需要了解如何在Play 2.4中应用依赖注入的新功能。我熟悉Guice并在Play文档中错过了解实际绑定发生的方式和时间。我阅读了官方文档[1],并尝试使用最新的Play Mailer [2]作为示例。 Play Mailer示例使用任意类,并使用MailerClient注释@inject属性。当我尝试使用此类的对象时,属性为null,至少在调试时。那么,我必须在何时何地进行实际注射?我对@singleton注释有同样的问题。它只是解释了如何注释它,而不是如何获取对象。我是否必须直接使用Guice,或者它是如何集成的?

[1] https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection

[2] https://github.com/playframework/play-mailer

1 个答案:

答案 0 :(得分:1)

我相信,绑定是通过添加到MailerModuleplay.modules.enabled来实现的。 MailerModule为MailerClient提供Guice绑定。

play {
  modules {
    enabled += "play.api.libs.mailer.MailerModule"
  }

为了让Guice将MailerClient注入你的对象,它应该通过Guice创建。例如,如果您想在控制器中使用@Inject MailerClient或注入控制器的服务,则需要通过Guice注入控制器。 Recommended approach for this in Play 2.4正在向build.sbt添加以下内容:

routesGenerator := InjectedRoutesGenerator