我的用户帐户创建方法如下,
public String saveAccountInfo(User user) {
if(null != user){
userService.addUser(user);
mailService.sendActivationEmail(user);
}
return "redirect:/greeting.html";
}
当用户提交帐户创建表单时,在“sendActivationEmail”成功发送电子邮件之前,不会显示greeting.html。 sendActivationEmail需要更长的时间,因此用户需要很长时间才能看到问候页面。我怎样才能触发此方法并允许流程完成?
答案 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";
}