@Schedul 中cron的命名规则
@Schedul注解的定时任务详解
1、springboot集成schedule
由于Spring Schedule包含在spring-boot-starter基础模块中了,所有不需要增加额外的依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
@Scheduled(cron = “0/20 ?”)//每20秒执行一次
public void scheduler(){
DateFormat df=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.println(“执行时间:”+df.format(new Date()));
}
常用的cron表达式:
每隔5秒执行一次:/5 ?
每隔10分钟执行一次:0 /10 ?
每天23点执行一次:0 0 23 ?
每天凌晨1点执行一次:0 0 1 ?
每月1号凌晨1点执行一次:0 0 1 1 ?
每月最后一天23点执行一次:0 0 23 L ?
每周星期天凌晨1点实行一次:0 0 1 ? L
在26分、29分、33分执行一次:0 26,29,33 ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * ?
cron一般是6个部分或是7个部分:如下所示:
- Seconds (秒)
- Minutes (分)
- Hours (时)
- Day-of-Month (天)
- Month (月)
- Day-of-Week (周)
- Year (年 可选字段)
cron规则如下:
Seconds (秒) :可以用数字0-59 表示;
Minutes(分) :可以用数字0-59 表示;
Hours(时) :可以用数字0-23表示;
Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份2月份没有只能1-28,有些月份没有31;
Month(月) :可以用0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示;
Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示;
“/”:为特别单位,表示为“每”如“0/10”表示每隔10分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行;
“?”:表示每月的某一天,或第周的某一天;
“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”;
“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”;
“#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为”6#3” or “FRI#3” 则表示“每月第三个星期五”;
“*” 代表整个时间段。
转载自:https://www.jianshu.com/p/c6f0f37fde31
参考网站:https://mp.weixin.qq.com/s?__biz=MzA4ODIyMzEwMg==&mid=2447532888&idx=1&sn=bb2944d69a0b1085e32197482f63c3e9&chksm=843bbf49b34c365fd65bf6b57348f3380e2805fb88b234fe09992158e0ede38bc71950236d8d&scene=21#wechat_redirect
springboot参考网址:https://cloud.tencent.com/developer/article/1149550
cron 生成器地址:http://cron.qqe2.com/
Cron官网:https://en.wikipedia.org/wiki/Cron