配置使用
1.启动类上添加@EnableScheduling注解,开启定时任务功能
@SpringBootApplication
@EnableScheduling
public class SanGengBlogApplication {
public static void main(String[] args) {
SpringApplication.run(SanGengBlogApplication.class,args);
}
}
2.定时任务执行代码
@Component //注入spring容器
public class TestJob {
@Scheduled(cron = "0/5 * * * * ?")
//标识需要定时执行的diamagnetic,注解cron配置任务的执行时间
public void testJob(){
//要执行的代码
System.out.println("定时任务执行了");
}
}
cron表达式
cron表达式是用来设置定时任务执行时间的表达式。
在线Cron表达式生成器帮助理解cron表达式。
cron表达式由七部分组成,中间由空格分隔,这七部分从左往右依次是:
秒(059),分钟(059),小时(0~23),日期(1-月最后一天),月份(1-12),星期几(1-7,1表示星期日),年份(一般该项不设置,直接忽略掉,即可为空值)
通用特殊字符:
*星号表示任意值
,可以用来定义列表
-定义范围
/ 每隔多少
* * * * * ?
表示 “ 每年每月每天每时每分每秒 ”
1,2,3 * * * * ?
表示 “ 每年每月每天每时每分的每个第1秒,第2秒,第3秒 ”
1-3 * * * * ?
表示 “ 每年每月每天每时每分的第1秒至第3秒 ”
5/10 * * * * ?
表示 “ 每年每月每天每时每分,从第5秒开始,每10秒一次 ”
“ / ” 的左侧是开始值,右侧是间隔。如果是从 “ 0 ” 开始的话,也可以简写成 “ /10 ”
日期部分还可允许特殊字符: ? L W
? 日期和星期部分可以使用,表示没有具体的值
注意冲突:日期和星期两个部分如果其中一个部分设置了值,另一个必须设置为?
0\* * * 2 * ? √
0\* * * ? * 2 √
* * * 2 * 2 ×
* * * ? * ? ×
W 表示当月中最接近某天的工作日
0 0 0 31W * ?
表示最接近31号的工作日,如果31号是星期六,则表示30号,即星期五,如果31号是星期天,则表示29号,即星期五。如果31号是星期三,则表示31号本身,即星期三。
L 表示最后
日期中表示每月的最后一天, L-2表示每个月的倒数第2天
星期中表示星期六(因为在星期中7表示星期六)
0 0 0 LW * ?
LW可以连起来用,表示每月最后一个工作日,即每月最后一个星期五
0 0 0 ? * L
表示每个星期六
0 0 0 ? * 6L
若前面有其他值的话,则表示最后一个星期几,即每月的最后一个星期五
星期部分还可允许的特殊字符: ? L #
#表示第几个星期几
0 0 0 ? * 6#3
表示每个月的第三个星期五。