我有一个带有MailService插件的grails应用程序。我需要使用sendMail(Closure callable)
方法从Java类发送电子邮件。
从一个普通的类中,我做下面的事情:
mailService.sendMail
{
to ["[email protected]"]
subject "Mail Subject"
body "this is a message body")
}
我如何从Java类中做同样的事情?
最佳答案
首先,将mailService
注入(inject)您的java类。假设您的Java类名称为JavaMailSender
,则该类的代码如下所示
class JavaMailSender {
@Autowired
private MailService mailService;
private void methodAsClosure(MailMessageBuilder builder) {
builder.to(Arrays.asList("[email protected]"));
builder.subject("Mail Subject");
builder.body("this is a message body");
}
void sendMail() {
MethodClosure closure = new MethodClosure(this, "methodAsClosure");
mailService.sendMail(closure);
}
}
现在剩下的一件事就是您必须像这样将
JavaMailSender
注册为grails-app/conf/resources.groovy
中的bean beans = {
javaMailSender(JavaMailSender)
}
感谢http://www.jroller.com/melix/entry/coding_a_groovy_closure_in提供了不错的教程。