十六、spring boot 定时器 - Scheduled
(一)、使用
1.创建spring boot 项目
2.创建定时任务
@Component
public class ScheduledDemo {
/**
* 间隔5秒执行一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void execute(){
System.out.println(new Date() + "定时器启动...");
}
}
3.开启定时任务
启动类添加注解@EnableScheduling
开启定时任务:
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.测试
(二)、介绍
1.@EnableScheduling
开启定时任务,添加在启动类上。
2.定时任务
- @Scheduled注解: 声明定时任务
3.Scheduled参数
(1)cron
定义任务何时启动,一个字符串表达式,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。
- cron 表达式语法:
格式:[秒] [分] [小时] [日] [月] [周] [年]
序号 | 说明 | 是否必填 | 值 | 特殊字符 |
---|---|---|---|---|
1 | 秒 | 是 | 0-59 | , - * / |
2 | 分 | 是 | 0-59 | , - * / |
3 | 时 | 是 | 0-23 | , - * / |
4 | 日 | 是 | 1-31 | , - * ? / L W |
5 | 月 | 是 | 1-12 or JAN-DEC | , - * / |
5 | 周 | 是 | 1-7 or SUN-SAT | , - * ? / L # |
5 | 年 | 否 | empty 或 1970-2099 | , - * / |
- 特殊字符说明:
序号 | 字符 | 说明 |
---|---|---|
1 | ∗ \color{red} {*} ∗ | 占位符,表示所有值。每分、每秒 |
2 | ? \color{red} {?} ? | 仅用于日和周,表示不指定值。 |
3 | − \color{red} {-} − | 表示区间。几分至几分都会执行任务 |
4 | , \color{red} {,} , | 表示指定多个值。第几分,第几分会执行任务 |
5 | / \color{red} {/} / | 表示递增触发。从x秒开始,每增x秒触发 |
6 | L \color{red} {L} L | 表示最后的意思。 |
7 | W \color{red} {W} W | 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发 |
8 | # \color{red} {\#} # | 序号(表示每月的第几个周几) |
(2)zone
时区,接收一个 java.util.TimeZone#ID。cron表达式会基于该时区解析。默认是一个空字符串,即取服务器所在地的时区。比如我们一般使用的时区Asia/Shanghai。一般留空。
(3)fixedDelay
上一次执行完毕时间点之后多长时间再执行,数值,单位秒。
(4)fixedDelayString
上一次执行完毕时间点之后多长时间再执行,字符串,单位秒,支持占位符。
(5)fixedRate
上一次开始执行时间点之后多长时间再执行,数值,单位秒。
(6)fixedRateString
上一次开始执行时间点之后多长时间再执行,字符串,单位秒,支持占位符。
(7)initialDelay
第一次延迟多长时间后再执行,数值,单位秒。
(8)initialDelayString
第一次延迟多长时间后再执行,字符串,单位秒,支持占位符。