SpringBoot整合定時任務task非常的簡單,共分為以下三步:
1. 在啟動類加上@EnableScheduling注解
2. 在controller的類上加上@Component注解
3. 在controller的方法上加上@Scheduled注解即可
之后啟動程序,就會自動開始執行任務了
SpringBoot整合定時任務task
啟動類代碼
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication //開啟定時任務 @EnableScheduling public class DemoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
controller代碼
@Component public class cronjobscontroller { private static final SimpleDateFormat dataFormat = new SimpleDateFormat("HH:mm:ss"); //每隔三秒執行一次任務 @Scheduled(fixedRate = 3000) public void cronJobs(){ System.out.println("時間為:"+dataFormat.format(new Date())); } }
控制台效果
SpringBoot定時任務Cron確定定時規則的方法
在線cron表達式生成器地址:http://cron.qqe2.com/
注意:這里要注意,這個工具 '年' 是不支持的。cron位數嚴格要求為6位。
在上面的例子中我們是使用@Scheduled(fixedRate = 3000)的方式,意思為每三秒執行一次。那么cron更為強大,它的使用方式如下:
比如:我現在想要每過1秒執行一次,那么配置如下
下面列舉一些常用的cron:
1秒執行一次:0/1 * * * * ?
1分鍾執行一次:0 */1 * * * ?
1小時執行一次:0 0 0/1 * * ?
0 0 12 * * ? 每天12點觸發
0 15 10 ? * * 每天10點15分觸發
0 15 10 * * ? 2005 2005年每天10點15分觸發
0 * 14 * * ? 每天下午的 2點到2點59分每分觸發
0 0/5 14 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發)
0 0/5 14,18 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發)
每天下午的 18點到18點59分(整點開始,每隔5分觸發)
0 0-5 14 * * ? 每天下午的 2點到2點05分每分觸發
0 10,44 14 ? 3 WED 3月分每周三下午的 2點10分和2點44分觸發 (特殊情況,在一個時間設置里,執行兩次或 兩次以上的情況)
0 59 2 ? * FRI 每周5凌晨2點59分觸發;
0 15 10 ? * MON-FRI 從周一到周五每天上午的10點15分觸發
0 15 10 15 * ? 每月15號上午10點15分觸發
0 15 10 L * ? 每月最后一天的10點15分觸發
0 15 10 ? * 6L 每月最后一周的星期五的10點15分觸發
0 15 10 ? * 6L 2002-2005 從2002年到2005年每月最后一周的星期五的10點15分觸發
0 15 10 ? * 6#3 每月的第三周的星期五開始觸發
0 0 12 1/5 * ? 每月的第一個中午開始每隔5天觸發一次
0 11 11 11 11 ? 每年的11月11號 11點11分觸發(光棍節)
0 15 10 ? * * 每天10點15分觸發
0 15 10 * * ? 2005 2005年每天10點15分觸發
0 * 14 * * ? 每天下午的 2點到2點59分每分觸發
0 0/5 14 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發)
0 0/5 14,18 * * ? 每天下午的 2點到2點59分(整點開始,每隔5分觸發)
每天下午的 18點到18點59分(整點開始,每隔5分觸發)
0 0-5 14 * * ? 每天下午的 2點到2點05分每分觸發
0 10,44 14 ? 3 WED 3月分每周三下午的 2點10分和2點44分觸發 (特殊情況,在一個時間設置里,執行兩次或 兩次以上的情況)
0 59 2 ? * FRI 每周5凌晨2點59分觸發;
0 15 10 ? * MON-FRI 從周一到周五每天上午的10點15分觸發
0 15 10 15 * ? 每月15號上午10點15分觸發
0 15 10 L * ? 每月最后一天的10點15分觸發
0 15 10 ? * 6L 每月最后一周的星期五的10點15分觸發
0 15 10 ? * 6L 2002-2005 從2002年到2005年每月最后一周的星期五的10點15分觸發
0 15 10 ? * 6#3 每月的第三周的星期五開始觸發
0 0 12 1/5 * ? 每月的第一個中午開始每隔5天觸發一次
0 11 11 11 11 ? 每年的11月11號 11點11分觸發(光棍節)
參考:
1. 慕課網視頻
持續更新!!!