spring-context-5.3.24版本源码实例化CronTrigger 时判断了cron表达式长度必须是6,spring 4.x中已经不支持7个参数的cronin表达式了
解决方案:
(1)使用别的定时框架
(2)可以不改变当前框架逻辑,在真正执行任务时,从新查询判断一下这个任务对应的年份,如果不是当前年份就跳过
(3)如果涉及很多业务代码,而且使用的地方比较多而且定时任务的时间都有年份的话,可以尝试通过增加业务条件限制,比如将非本年的定时任务都过滤掉,这样就可以用6位表达式了。
注意:第三个解决方案也有缺点就是需要另外单独的一个定时任务在每年1月1号凌晨执行将本年需要执行的任务加载进来或者需要每年1月1号凌晨重启一次服务加载本年要执行的任务。
eg:定时任务列表中有:
2024-08-13 10:16:54&17&0
2024-08-15 10:20:26&18&0
2025-08-02 17:30:29&37&0
2053-08-31 12:06:31&8&0
2099-08-28 12:14:50&1&0