一、异步任务
两个注解:@Async 在需要异步执行的方法上标注注解@EnableAsync 在主类上标注开启异步任务支持
二、定时任务(推荐使用saturn)
项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor 、TaskScheduler 接口。
两个注解:@EnableScheduling 标注在主类,开启对定时任务支持@Scheduled 标注在执行的方法上,并制定cron属性
cron表达式:
second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几).0 0/5 14,18 * * ? 每天14点整,和18点整,每隔5分钟执行一次0 15 10 ? * 1-6 每个月的周一至周六10:15分执行一次0 0 2 ? * 6L 每个月的最后一个周六凌晨2点执行一次0 0 2 LW * ? 每个月的最后一个工作日凌晨2点执行一次0 0 2-4 ? * 1#1 每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次;
| 字段 | 允许值 | 允许的特殊字符 |
|---|---|---|
| 秒 | 0-59 | , - * / |
| 分 | 0-59 | , - * / |
| 小时 | 0-23 | , - * / |
| 日期 | 1-31 | , - * ? / L W C |
| 月份 | 1-12 | , - * / |
| 星期 | 0-7或SUN-SAT 0,7是SUN | , - * ? / L C # |
| 特殊字符 | 代表含义 |
|---|---|
| , | 枚举 |
| - | 区间 |
| * | 任意 |
| / | 步长 |
| ? | 日/星期冲突匹配 |
| L | 最后 |
| W | 工作日 |
| C | 和calendar联系后计算过的值 |
| # | 星期,4#2,第2个星期四 |
三、 邮件任务
- 邮件发送需要引入 spring-boot-starter-mail
- SpringBoot自动配置MailSenderAutoConfiguration
- 定义MailProperties内容,配置在application.yml中
- 自动装配JavaMailSender
- 测试邮件发送
spring.mail.username=邮箱用户名spring.mail.password=邮箱密码或授权码spring.mail.host=smtp.qq.com

@Autowiredprivate JavaMailSenderImpl javaMailSender;/*** 普通邮件发送*/public void send(){SimpleMailMessage message = new SimpleMailMessage();//设置主题和内容message.setSubject("今天开会");message.setText("555开会,不要迟到");//设置发送方和接收方message.setFrom("19****@qq.com");message.setTo("132****@163.com");javaMailSender.send(message);}/*** 发送邮件带附件* @throws Exception*/public void sendWithAttactment() throws Exception{MimeMessage message = javaMailSender.createMimeMessage();//multipart=true//开启对内联元素和附件的支持MimeMessageHelper helper = new MimeMessageHelper(message,true);helper.setSubject("今天开会");//html=ture//设置content type=text/html,默认为text/plainhelper.setText("<b style='color:red'>今晚开会,不要迟到</b>",true);helper.setFrom("19****@qq.com");helper.setTo("132****@163.com");//设置附件helper.addAttachment("1.jpg",new File("C:\\Users\\banpu\\Desktop\\1.jpg"));helper.addAttachment("123.xls",new File("C:\\Users\\banpu\\Desktop\\123.xls"));javaMailSender.send(message);}}
复杂邮件发送
带有附件或html页面的邮件
两个设置new MimeMessageHelper(message,true) 设置multipart=true,开启对内联元素和附件的支持helper.setText("xxxx",true) html=ture,设置content type=text/html,默认为text/plain
