Spring @Scheduled 默认不支持 L
- 作者:
- runtucms
- 最后修订:
- 2023-02-01 15:32:49
- 开发日志 873
摘要:Spring定时任务的坑 @Scheduled 默认不支持 L 等其他特殊字符 关键字.折中方案,28-31号之间运行,如果当天不是本月最后一天,则不执行后续逻辑
Spring 定时任务的坑 @Scheduled 默认不支持 L 等其他特殊字符 关键字
原本定义的执行机制
@Scheduled(cron = "0 59 23 L 3,6,9,12 ?")
启动项目时发现会报错
java.lang.IllegalStateException: Encountered invalid @Scheduled method 'LastReportOfMonth': For input string: "L"
Spring 默认定时 @Scheduled 不支持 L、W、C 关键字
详情可看源码
折中方案,28-31 号之间运行,如果当天不是本月最后一天,则不执行后续逻辑
@Scheduled(cron = "0 59 23 28-31 3,6,9,12 ?")
public void setUserGradeByEffectProperty() {
final Calendar calendar = Calendar.getInstance();
//如果不是最后一天 则不执行定时任务
if (!(calendar.get(Calendar.DATE) == calendar.getActualMaximum(Calendar.DATE))){
log.info("ClientTask->setUserGradeByEffectProperty:不是最后一天");
return;
}
//todo something
}