我有一个带有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提供了不错的教程。

07-28 14:25