Spring框架或其他支持Cron表达式的任务调度系统中@Scheduled(cron = "0 7 0/2 * * ?")表示什么意思呢?
@Scheduled(cron = "0 7 0/2 * * ?")
public void selectPush() {
logger.info("==============info获取=========================");
pushService.initInfo(queryPriceUrlMap);
logger.info("==============info获取=========================");
}
这个Cron表达式 0 7 0/2 * * ? 的意思是:在每天的每隔2小时的第7分钟(即0:07, 2:07, 4:07, 6:07, 8:07, 10:07, 12:07, 14:07, 16:07, 18:07, 20:07, 22:07)触发任务。
详细知识点:
@Scheduled(cron = "0 7 0/2 * * ?") 是一个使用Cron表达式的定时任务注解,通常用在Spring框架或其他支持Cron表达式的任务调度系统中。这个表达式定义了任务执行的时间规则。
Cron表达式由六个或七个空格分隔的时间字段组成,每个字段代表一个时间单位。这些字段通常代表:
- 秒(0-59)
- 分钟(0-59)
- 小时(0-23)
- 日期(1-31)
- 月份(1-12 或 JAN-DEC)
- 星期(1-7 或 SUN-SAT)
- 年份(可选字段)
对于你给出的表达式 0 7 0/2 * * ?,它的含义如下:
- 0 秒:表示在每分钟的第0秒触发。
- 7 分钟:表示在每小时的第7分钟触发。
- 0/2 小时:表示从0点开始,每隔2小时触发一次。所以,它会在0点、2点、4点、6点、8点、10点、12点、14点、16点、18点、20点和22点的第7分钟触发。
- * 日期:表示每天。
- * 月份:表示每月。
- ? 星期:在日期和星期这两个字段中,至少有一个需要被设置为?,表示不指定值。在这里,?表示不指定具体的星期几,因为日期字段已经被设置为每天了。
综上所述,这个Cron表达式 0 7 0/2 * * ? 的意思是:在每天的每隔2小时的第7分钟(即0:07, 2:07, 4:07, 6:07, 8:07, 10:07, 12:07, 14:07, 16:07, 18:07, 20:07, 22:07)触发任务。