一、异步任务
两个注解:@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
@Autowired
private 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/plain
helper.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