Spring Boot 异步任务
在项目开发中,绝大多数情况下都是通过同步方式处理业务逻辑的,但是比如批量处理数据,批量发送邮件,批量发送短信等操作容易造成阻塞的情况,之前大部分都是使用多线程来完成此类任务。
而在Spring 3+之后,就已经内置了@Async注解来完美解决这个问题,从而提高效率
使用的注解:
- @EnableAysnc 启动类上开启基于注解的异步任务
- @Aysnc 标识的方法会异步执行
异步任务实战操作如下:
启动主启动类:发送请求,访问:http://localhost:8080/hello
三秒后响应结果。
这样的响应时间太慢了,我们通过异步处理来解决:
- @EnableAysnc 启动类上开启基于注解的异步任务
- @Aysnc 标识的方法会异步执行
重启,再次访问,访问之后就会立刻响应结果。
Spring Boot 定时任务调度
在项目开发中,经常需要执行一些定时任务,比如每月1号凌晨需要汇总上个月的数据分析报表; 每天凌晨分析前一天的日志信息等定时操作。Spring 为我们提供了异步执行定时任务调度的方式:
使用的注解:
- @EnableScheduling启动类上开启基于注解的定时任务
- @Scheduled标识的方法会进行定时处理
需要通过 cron 属性来指定 cron 表达式:秒 分 时 日 月 星期几
启动项目,每每都会执行
在线生成cron表达式http://cron.qqe2.com/
邮件发送实战
邮件发送环境准备
实战操作步骤:
1. 引入邮件启动器:
2. Spring Boot 提供了自动配置类MailSenderAutoConfiguration3. 在 application.properties 中配置邮箱信息, 参考 MailProperti
密码不写明文在配置中,在QQ邮箱中进行获取制授权码,如下操作:
上面开通后,点击 “生成授权码”,根据提示发送短信验证,会生成邮件密码, 修改密码会重新生成
邮件发送实战操作:
- Spring Boot 自动装配 JavaMailSenderImpl 进行发送邮件: