Cron表达式基本结构
Cron表达式由七部分组成,每部分由空格分隔,从左到右依次是:
- 秒(0~59)
- 分钟(0~59)
- 小时(0~23)
- 日期(1-月最后一天)
- 月份(1-12 或 JAN-DEC)
- 星期几(1-7, 1表示星期日 或 SUN-SAT)
- 年份(可选,留空)
通用特殊字符
*
:表示任意值,例如* * * * * ?
表示每年每月每天每时每分每秒。
,
:表示列表,例如1,2,3 * * * * ?
表示每年每月每天每时每分的每个第1秒、第2秒、第3秒。
-
:定义范围,例如1-3 * * * * ?
表示每年每月每天每时每分的第1秒至第3秒。
/
:表示每隔多少,例如5/10 * * * * ?
表示从第5秒开始,每10秒一次。
日期和星期的特殊字符
?
:只能用在日期和星期部分,表示没有具体的值。日期和星期两个部分如果其中一个部分设置了值,则另一个必须设置为?
。
L
:表示最后(Last),只能用在日期和星期中。在日期中表示每月最后一天,在星期中表示7(星期六),也可结合使用如LW
表示每月最后一个工作日。
W
:只能用在日期中,表示当月中最接近某天的工作日。
#
:只能用在星期中,表示第几个星期几,例如6#3
表示每月的第三个星期五。
示例
0/5 * * * * ?
:表示每秒的第0秒开始,每隔5秒执行一次。
0 0 8-10 ? * *
:表示在上午8点、9点和10点的每分钟的第0秒执行。
0 0/30 8-10 ? * *
:表示在上午8点、9点和10点,每隔30分钟执行一次。
0 0 8 ? * MON-FRI
:表示在上午8点的每分钟的第0秒,星期一到星期五执行。
0 0 8 L * ?
:表示在每月的最后一天的上午8点的每分钟的第0秒执行。
0 0 8 ? * 6L
:表示在每月的最后一个星期六的上午8点的每分钟的第0秒执行。
0 0 8 ? * 6#3
:表示在每月的第三个星期六的上午8点的每分钟的第0秒执行。
Spring Boot中使用Cron表达式
在Spring Boot中,可以使用@Scheduled
注解配合Cron表达式来定义定时任务。
@Component
public class TestJob {
@Scheduled(cron = "0/5 * * * * ?")
public void testJob() {
System.out.println("定时任务执行了");
}
}
以上就是在Spring Boot中如何使用Cron表达式来定义定时任务的简单示例。