我添加了这是我的控制器
@RequestMapping(value = "/persons/add", method = RequestMethod.POST)
public String add(@Valid @ModelAttribute("personAttribute") Person person,
BindingResult result) {
logger.debug("Received request to add new person");
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo("someone@abc.com");
mailMessage.setSubject("This is the test message for testing gmail smtp server using spring mail");
mailMessage.setFrom("abc@gmail.com");
mailMessage.setText("This is the test message for testing gmail smtp server using spring mail. \n" +
"Thanks \n Regards \n Saurabh ");
mailSender.send(mailMessage);
if (result.hasErrors())
return "hibernate/addpage";
else
personService.add(person);
return "hibernate/addedpage";
}NOw按下add按钮后需要5-6秒
发布于 2011-03-13 15:58:26
就像David说的,使用异步API。我不建议创建一个新的线程。在这里为每个请求创建一个线程可能意味着创建了许多线程来服务并发请求。最好使用具有有限池大小的线程池执行器,并将执行邮件发送的作业排入队列。Google java executors以及如何在spring中使用它们;有各种实现。这意味着你的请求不会阻塞,它们的执行速度就像你根本没有发送邮件一样快(差不多)。
或者,使用本地邮件服务器-通过运行在本地主机上的邮件服务器发送邮件要快得多,但我建议使用异步方法。然而,如果沿着异步路线走下去,有一些事情需要考虑,比如如何处理邮件发送失败。在错误条件下,您的执行流程不同是很重要的,还是可以安全地忽略它?
发布于 2011-03-13 15:22:40
这是一个问题吗?
您正在同步发送邮件-这可能需要几秒钟的时间。有什么问题吗?
我认为gmail也有可能工作……
发布于 2011-03-13 15:25:08
这可能是意料之中的。向邮件服务器提交邮件消息不是即时的。
如果有问题,可以使用异步API来发送消息(或者启动一个Thread来完成)。
https://stackoverflow.com/questions/5288043
复制相似问题