1、异步任务
- @EnableAsyc:主程序开启异步注解;
- @Asyc:方法添加注解,告诉spring是一个异步方法,就会开一个线程池自动调用;
2、定时任务
- @EnableScheduling:开启定时任务;
- @Scheduled:方法标注定时表达式;
表达式6位,分别代表:秒分时日月周
//每天每秒启动
@Scuheduled(cron="* * * * * MON-SAT")
//每周一到周五整秒启动,即每周一到周五每分钟启动一次
@Scuheduled(cron="0 * * * * MON-FRI")
//每周一到周五0秒,1秒,2秒,3秒,4秒启动
@Scuheduled(cron="0,1,2,3,4 * * * * MON-FRI")
@Scuheduled(cron="0-4 * * * * MON-FRI")
//每周一到周五0秒启动,每4秒一次
@Scuheduled(cron="0/4 * * * * MON-FRI")
//每月周一到周六10:15执行一次
@Scuheduled(cron="0 15 10 ? * 1-6")
//每月最后一个周六2:00执行一次
@Scuheduled(cron="0 0 2 ? * 6L")
//每月最后一个工作日2:00执行一次
@Scuheduled(cron="0 0 2 LW * ?")
//每个月第一个周一2:00-4:00的每个整点执行一次
@Scuheduled(cron="* * 2-4 ? * 1#1")
符号 | 含义 |
---|---|
* | 任意 |
, | 枚举 |
- | 区间 |
/ | 步长 |
? | 日与星期冲突匹配 |
L | 最后 |
W | 工作日 |
# | 星期,4#2:第二个星期四 |
注意: |
- 日和星期会出现冲突,需要?匹配,如每日和星期天执行会发生冲突,其中一个需要?表示;
- 星期处理单词缩写,也可以用数字表示,1-6表示周一到周六,0与7表示周日;
3、邮件任务
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置:
spring:
mail:
username: yan
password: xssuhxsxianzq #为第三方登录授权码
host: smtp.qq.com #smtp主机地址
- 需要开通邮箱服务,获取第三方登录授权码
实现
@Autowired
JavaMailSenderImpl mailSender;
public void sendMail() throws MessagingException {
//1 简单邮件
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setSubject("标题");
mailMessage.setText("内容");
mailMessage.setTo("收件人1","收件人2");
mailMessage.setFrom("发送人");
mailSender.send(mailMessage);
//2 复杂邮件
//2-1 创建邮件
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message,true);
//2-2设置内容
messageHelper.setSubject("标题");
messageHelper.setText("<h4>内容</h4>",true);//这是一个html
messageHelper.setTo("收件人");
messageHelper.setFrom("发送人");
messageHelper.addAttachment("文件名称", new File("文件路径1"));
mailSender.send(message);
}