Spring Boot 异步任务

在项目开发中,绝大多数情况下都是通过同步方式处理业务逻辑的,但是比如批量处理数据,批量发送邮件,批量发送短信等操作容易造成阻塞的情况,之前大部分都是使用多线程来完成此类任务。

而在Spring 3+之后,就已经内置了@Async注解来完美解决这个问题,从而提高效率

使用的注解:

  • @EnableAysnc 启动类上开启基于注解的异步任务
  • @Aysnc 标识的方法会异步执行
    异步任务实战操作如下:



    启动主启动类:发送请求,访问:http://localhost:8080/hello
    三秒后响应结果。
    这样的响应时间太慢了,我们通过异步处理来解决:

- @EnableAysnc 启动类上开启基于注解的异步任务

springboot 发邮件多个收件人_发送邮件


- @Aysnc 标识的方法会异步执行

springboot 发邮件多个收件人_邮件发送_02


重启,再次访问,访问之后就会立刻响应结果。

Spring Boot 定时任务调度

在项目开发中,经常需要执行一些定时任务,比如每月1号凌晨需要汇总上个月的数据分析报表; 每天凌晨分析前一天的日志信息等定时操作。Spring 为我们提供了异步执行定时任务调度的方式:

使用的注解:

  • @EnableScheduling启动类上开启基于注解的定时任务
  • @Scheduled标识的方法会进行定时处理

需要通过 cron 属性来指定 cron 表达式:秒 分 时 日 月 星期几

springboot 发邮件多个收件人_springboot 发邮件多个收件人_03


springboot 发邮件多个收件人_异步任务_04


启动项目,每每都会执行

springboot 发邮件多个收件人_发送邮件_05


springboot 发邮件多个收件人_springboot 发邮件多个收件人_06


springboot 发邮件多个收件人_springboot 发邮件多个收件人_07


在线生成cron表达式http://cron.qqe2.com/

springboot 发邮件多个收件人_发送邮件_08

邮件发送实战

邮件发送环境准备

springboot 发邮件多个收件人_异步任务_09


实战操作步骤:

springboot 发邮件多个收件人_springboot 发邮件多个收件人_10


1. 引入邮件启动器:

springboot 发邮件多个收件人_发送邮件_11


2. Spring Boot 提供了自动配置类MailSenderAutoConfiguration3. 在 application.properties 中配置邮箱信息, 参考 MailProperti

springboot 发邮件多个收件人_发送邮件_12


密码不写明文在配置中,在QQ邮箱中进行获取制授权码,如下操作:

springboot 发邮件多个收件人_异步任务_13


上面开通后,点击 “生成授权码”,根据提示发送短信验证,会生成邮件密码, 修改密码会重新生成

springboot 发邮件多个收件人_异步任务_14


邮件发送实战操作:

  1. Spring Boot 自动装配 JavaMailSenderImpl 进行发送邮件: