SpringBoot定时任务
项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式,提供TaskExecutor 、TaskScheduler 接口。
1. 启动类添加@EnableScheduling注解
@SpringBootApplication //开启定时任务 @EnableScheduling public class StartDemoApplication { public static void main(String[] args) { SpringApplication.run(StartDemoApplication.class, args); } }
2.建立定时任务,使用@Component注解
@Component public class TestTask { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //定义每过3秒执行任务 @Scheduled(fixedRate = 3000) public void reportCurrentTime() { System.out.println(dateFormat.format(new Date())); } }
定时任务表达式
@Scheduled(cron = "")
cron支持6位
表达式参考网址 cron.qqe2.com
如: @Scheduled(cron = "0/5 * * * * ? ")
0和7都代表周日
second(秒),minute(分),hour(时),day of month(日),month(月),day of week(周几). 0 * * * * MON-FRI 【0 0/5 14,18 * * ?】每天14点整,和18点整,每隔5分钟执行一次 【0 15 18 ? * 1-6】每个月的周一至周六18:15分执行一次 【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次 【0 0 0 LW * ?】每个月的最后一个工作日凌晨2点执行一次 【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次;