每月最后一天执行的 cron 表达式为: 0 0 0 L * ? , 在spring 中相应方法中的注解写法为:
@Scheduled(cron = "0 0 0 L * ? ")
但如果使用的是 低版本的spring, 默认是不支持 L 的写法的, 这时可以使用如下写法曲线救国, 主要思路是每个月的 28-31号都执行一次任务, 在定时任务中检查是否是当月最后一天
@Scheduled(cron = "0 0 0 28-31 * ?")
public void scheduled(){
log.info("使用cron: {}");
final Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DATE));
System.out.println(c.getActualMaximum(Calendar.DATE));
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)){
System.out.println("是最后一天!");
}else{
System.out.println("不是最后一天!");
}
}
cron工具: cron表达式生成器
参考: