在项目开发中,经常需要执行一些定期任务,如 上个月的数据分析报告需要每月1日凌晨汇总; 每天早上分析前一天的日志信息和其他定期操作。Spring 定期任务调度的异步执行为我们提供了一种方式。
使用注释:
@EnableScheduling 基于注释的定时任务在启动类上打开@Scheduled 标识的方法会定期处理
需要通过 cron 属性来指定 cron 表达式: 秒 分 时 日 月 星期几
@Service public class ScheduledService { private static int count = 1; /** * 秒 分 时 日 月 星期几 * 比如: "0 * * * * MON-FRI" 从周一到周五, 每次0秒执行(即每分钟执行一次) */ @Scheduled(cron = "1-10 * * * * *") public void dataCount() { System.out.println(“数据统计第” + count++ + "次"); } }
cron表达式
cron表达式在线生成 http://cron.qqe2.com/案例如下:
1-5 * * * * 1到5秒,每秒触发任务 */5 * * * * 每5秒执行一次 0 */1 * * * 每隔一分钟执行一次 0 0/1 * * * ? 0 0 5-15 * * 每天5-15点触发 0 0-5 14 * * 每天下午2点到下午2点:05期间的每1分钟触发 0 0/5 14 * * 每天下午2点到下午2点:每5分钟触发55期间的触发 0 0/5 14,18 * * 每天下午2点到2点:从下午6:00到6:55期间:每5分钟触发55期间的触发 0 0/30 9-17 * * 朝九晚五工作时间内每半小时工作一次 0 0 12 ? * WED 表示每周三中午12点 0 10,44 14 ? * WED 表示每周三中午12点 0 10,44 14 ? 3 WED 每年3月的星期三下午2:10和2:44触发 0 0 23 L * ? 每月最后一天23:00执行一次 0 15 10 LW * ? 每月最后一个工作日10:15:00触发任务 0 15 10 ? * 5#3 每月第三周星期五10点15分0秒触发任务