我需要迁移播放邮件插件以进行播放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)
}
}
答案 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