创建新用户帐户并发送电子邮件

时间:2013-01-29 11:53:15

标签: java spring-mvc

我的用户帐户创建方法如下,

      public String saveAccountInfo(User user) {

    if(null != user){
        userService.addUser(user);
        mailService.sendActivationEmail(user);
    }

    return "redirect:/greeting.html";
}

当用户提交帐户创建表单时,在“sendActivationEmail”成功发送电子邮件之前,不会显示greeting.html。 sendActivationEmail需要更长的时间,因此用户需要很长时间才能看到问候页面。我怎样才能触发此方法并允许流程完成?

3 个答案:

答案 0 :(得分:1)

您必须开始一个新主题并从新主题中发送电子邮件。

这几乎是您在Java中实现异步处理的唯一方法。

答案 1 :(得分:0)

发送激活邮件的任务可以由另一个线程完成。这将允许您显示问候页面。

if(null != user)
{
    userService.addUser(user);

    Thread mailSenderThread = new Thread(new Runnable()
    {
        public void run()
        {
            mailService.sendActivationEmail(user);
        }
    });
    mailSenderThread.start();
}

这样的事情可以做到。

答案 2 :(得分:0)

我就是这样做的,

     public String saveAccountInfo(final User user) {

    if(null != user){
        user.setActivationKey(generateRandomKey());
        userService.addUser(user);
        new Thread(new Runnable(){
            @Override
            public void run() {
                mailService.sendActivationEmail(user);                  
            }               
        }).start();
    }       
    return "redirect:/greeting.html";
}