Spring默认定时@Scheduled不支持L关键字

Spring默认定时@Scheduled不支持L关键字

每个月的最后一天10:15”执行定时任务,@Scheduled(cron = “0 15 10 L * ?”),它在初始化Spring上下文时出现了错误:

1
2
3
4
Caused by: java.lang.IllegalStateException: Encountered invalid 
@Scheduled method 'execute': For input string: "L"

原因是不支持L,W,C特殊字符
  • 解决方案:

首先,为每个可能的最后几天调用调度程序(28,29,30,31)。然后,在函数块内用if块检查这是否是最后一个日期。如果是,则执行预期的任务。

1
2
3
4
5
6
7
8
@Scheduled(cron = "0 15 10 28-31 * ?")
public void execute() {
final Calendar c = Calendar.getInstance();
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
//是最后一天
System.out.println("信息员等级升降级。。。。");
}
}

参考链接:
https://stackoverflow.com/questions/54415868/spring-schedule-last-day-of-month-not-working
https://stackoverflow.com/questions/31445395/cron-expression-is-not-working-for-last-day-of-the-month
https://stackoverflow.com/questions/18079289/workaround-for-cronsequencegenerator-last-day-of-month?noredirect=1&lq=1

-------------已经触及底线 感谢您的阅读-------------

本文标题:Spring默认定时@Scheduled不支持L关键字

文章作者:趙小傑~~

发布时间:2019年07月05日 - 22:32:00

最后更新:2019年07月26日 - 23:32:12

原始链接:https://cnsyear.com/posts/61da5c6d.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%