如何在play framework 2.5.x中使用注入实例化一个控制器类

时间:2017-06-15 08:09:38

标签: scala dependency-injection playframework playframework-2.5

我刚将play框架升级到2.5.x.我用play mail 5.0.0重构了邮件发送功能。但是,当我尝试发送电子邮件时,我得到参数与签名不匹配的错误。

如何在不必定义路径的情况下实现MailHandler类?

class MailHandler @Inject()(mailer: MailerClient, val messagesApi: MessagesApi, environment: Environment) extends Controller with I18nSupport{
  def sendEmail(...) = {
  mailer.send(....)

}

controllers.mail.MailHandler m = new controllers.mail.MailHandler();
m.sendAuthenticationSubmitEmail(user.email, type);

1 个答案:

答案 0 :(得分:0)

如果您正在编写一段使用依赖注入的组件(在您的情况下为MailHandler)的代码,则需要在构造函数(new MailHandler(mailer, messagesAp, ..))中传递该依赖项或你也需要注入那个组件。

在典型的播放控制器中,这可能如下所示:

class MyController @Inject() (myMailerHandler: MailHandler) {
  m.sendAuthenticationSubmitEmail(user.email, type);
}