插件如何与注入和对象一起使用而不是在游戏中使用类2.4

时间:2015-07-03 04:34:29

标签: scala playframework playframework-2.4

我需要迁移播放邮件插件以进行播放2.4。我检查了一些样本以进行播放2.4并发现所有示例都使用插件类。我不想把它转换为课堂。有没有办法让它与Object一起使用?

样品

class MyComponent @Inject() (mailerClient: MailerClient) {
    def sendEmail {
       val email = Email(......)
       ......
       mailerClient.send(email)
    }
}

原始代码

object MailHandler{
  def sendEmail(to: String) = {
try {
  val email = play.api.libs.mailer.Email(...)
  MailerPlugin.send(email)
}catch{
  case ex:Exception=>PlayLogger.instance.error(ex.getMessage)
}
}

1 个答案:

答案 0 :(得分:2)

我假设您使用对象而不是类,以使其成为单身。

单身人士有一个特殊的注释( - > @Singleton),可确保只创建一个班级实例。

虽然他们仍然使用实际的类而不是对象。

示例可能如下所示:

import javax.inject._

@Singleton
class MailerClient {
  def sendEmail(to: String) = {
    try {
      val email = play.api.libs.mailer.Email(...)
       MailerPlugin.send(email)
    }catch{
      case ex:Exception=>PlayLogger.instance.error(ex.getMessage)
    }
  }
}

查看文档: https://www.playframework.com/documentation/2.4.x/ScalaDependencyInjection#Singletons