项目中有各种需求,会要求一个流程里,执行一些分支类的方法,比如注册时候,发送确认邮件等。注册流程本身并不需要等待发送邮件的结果,所以发送邮件的方法,应该异步来执行。
我们可以用mq的机制来让它异步执行,也可以直接用spring的@Async注解让发送邮件的动作异步执行。
需要注意的是,不能在比如UserService里,添加一个@Async sendmail()方法,这样不会异步执行,要新建一个Service类,比如
@Component
** MailService {
@Async
sendmail(){
}
}
然后UserService里,调用这个方法即可。
@Async的使用,要记得在spring的配置文件里,添加task的配置,比如
xmlns:task="http://www.springframework.org/schema/task"
和
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
另外加上<task:annotation-driven />
使用@Async,可以简化一些需要异步执行的方法配置,毕竟不是每个应用都需要mq系统。