2024.6.5 Wednesday
接上文【WEEK15】 【DAY2】【DAY3】邮件任务【中文版】
目录
- 17.异步、定时、邮件任务
- 17.3.定时任务
- 17.3.1.两个注解:
- 17.3.2.Cron表达式
- 17.3.3.修改Springboot09TestApplication.java开启定时功能的注解
- 17.3.4.新建ScheduledService.java
- 17.3.5.重启项目
17.异步、定时、邮件任务
17.3.定时任务
项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候,分析一次前一天的日志信息,Spring为我们提供了异步执行任务调度的方式,提供了两个接口。(详见TaskExecutor.class和TaskScheduler.class)
- TaskExecutor接口(任务执行者)
- TaskScheduler接口(任务调度者)
17.3.1.两个注解:
- @EnableScheduling——开启定时功能的注解
- @Scheduled——什么时候执行
17.3.2.Cron表达式
cron表达式:
字段 | 允许值 | 允许特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * / ? L W C |
月份 | 1-12 | , - * / |
星期 | 0-1或SUN-SAT 0,7是SUN | , - * / ? L W C |
特殊字符 | 代表含义 |
---|---|
, | 枚举 |
- | 区间 |
* | 任意 |
/ | 步长 |
? | 日/星期冲突匹配 |
L | 最后 |
W | 工作日 |
C | 和calendar练习后计算过的值 |
# | 星期,4#2 第二个星期三 |
17.3.3.修改Springboot09TestApplication.java开启定时功能的注解
package com.P51;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync //开启异步注解功能
@EnableScheduling //开启定时功能的注解
@SpringBootApplication
public class Springboot09TestApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot09TestApplication.class, args);
}
}
17.3.4.新建ScheduledService.java
package com.P51.service;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class ScheduledService {
//cron表达式(可以上网搜索表达式等解释)
@Scheduled(cron = "30 06 14 * * ?") //每天14:06:30执行一次
@Scheduled(cron = "0/2 * * * * ?") //每天每两秒执行一次
public void hello(){
System.out.println("execute");
}
}
官方的解释,很详细,值得看:
其他参考资料:
https://www.bejson.com/othertools/cron/