Spring Boot异步调用方法

2019-06-22 wjy329 SpringBoot 8

事情经过:博客的留言板开发中,需要添加一个功能是回复某人的留言,他会收到回复的提示邮件。很简单的需求么,回复插入数据库,紧接着调用发邮件接口,返回结果给前台,一套流程写完,神清气爽。然后测试,我尼玛。。。迟迟没有收到返回的数据,一看日志才发现,插入数据库和邮件发送成功间隔了5秒左右,等待时间太长了。这时,才醒悟过来,发邮件这种反馈慢的功能,需要异步执行啊,那么流程就变成了这样,回复插入数据库,返回结果,但是此时异步执行发邮件,就由他去吧,哈哈哈。不啰嗦了,直接上方法。这里主要写注解的方式。

启动类添加@EnableAsync 注解,需要异步调用的方法添加@Async注解,完事。

示例代码:
1.启动类:
package com.wjy329;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableAsync;


@SpringBootApplication
@EnableAsync
public class WWebApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WWebApplication.class, args);
}
}
2.添加回复代码:
public class replyController{

......
//这个方法完成添加数据库,并发送邮件
public String getReply(Reply reply){
// 添加到数据库
replyService.addReply(reply);
// 发送邮件
mailService.sendMail();

return "ok.......";
}

}
3.发送邮件实现类:
public class MailServiceImpl implents MailService{
@Override
@Async
public void sendMail(){
//具体实现代码省略,关键在于代码
}
}


这样就实现了添加回复并发送邮件,插入到数据库后,立马返回成功数据,前台刷新,后台继续执行发送邮件方法,体验良好。

要是您有更好的方法,请评论或留言,一起交流。

我是菜鸟,我在成长。



本文作者:wjy329
版权声明:本博客除特殊说明外均属本人原创。如需转载请署名作者及文章出处。
评论