spring boot中使用定時任務配置
==================================================================================================================================
首先得創建一個spring boot項目吧,使用idea創建spring boot項目 本博客有教程
【本文完整代碼 可參見 GItHub】
==================================================================================================================================
使用步驟如下
【千萬注意:一定要在啟動類添加注解,否則定時任務無效】
1.在啟動類 添加 開啟定時任務 注解@EnableScheduling
2.創建定時任務類,使用注解@Component 標注定時任務類,作用是注入為Bean
使用注解@Scheduled 標注在定時任務方法上, 作用是標注這個方法是執行定時任務的業務邏輯
關於@Scheduled的使用方法,參見后面備注1
@Component public class AutoUpdateDateSchedule { @Autowired HuaYangService service; //每一分鍾執行一次 @Scheduled(cron = "0 0/1 * * * ?") public void dealUpdateTask(){ System.out.println("定時更新數據庫操作--->開始"); //只做最簡單的 業務操作 service.scheduleUpdate(); System.out.println("定時更新數據庫操作--->結束"); } }
=========================================================備注1=========================================================================
@Scheduled
1.cron屬性的舉例解析:
Seconds : 可出現", - * /"四個字符,有效范圍為0-59的整數 Minutes : 可出現", - * /"四個字符,有效范圍為0-59的整數 Hours : 可出現", - * /"四個字符,有效范圍為0-23的整數 DayofMonth : 可出現", - * / ? L W C"八個字符,有效范圍為0-31的整數 Month : 可出現", - * /"四個字符,有效范圍為1-12的整數或JAN-DEc DayofWeek : 可出現", - * / ? L C #"四個字符,有效范圍為1-7的整數或SUN-SAT兩個范圍。1表示星期天,2表示星期一, 依次類推 Year : 可出現", - * /"四個字符,有效范圍為1970-2099年 下面簡單舉幾個例子: "0 */1 * * * ?" 每隔1分鍾執行一次定時任務 "0 */5 * * * ?" 每隔5分鍾執行一次定時任務 "0 0 12 * * ?" 每天中午十二點觸發 "0 15 10 ? * *" 每天早上10:15觸發 "0 15 10 * * ?" 每天早上10:15觸發 "0 15 10 * * ? *" 每天早上10:15觸發 "0 15 10 * * ? 2005" 2005年的每天早上10:15觸發 "0 * 14 * * ?" 每天從下午2點開始到2點59分每分鍾一次觸發 "0 0/5 14 * * ?" 每天從下午2點開始到2:55分結束每5分鍾一次觸發 "0 0/5 14,18 * * ?" 每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鍾一次觸發 "0 0-5 14 * * ?" 每天14:00至14:05每分鍾一次觸發 "0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44觸發 "0 15 10 ? * MON-FRI" 每個周一、周二、周三、周四、周五的10:15觸發
2.fixedRate屬性
用來標志 上次定時任務 和 下次定時任務 之間的延時時長【不管上次的定時任務是否已經執行完成,延時時間一到,立刻執行下次定時任務】【所以如果上一個任務執行之間長於 延時時長,則會發生重復執行的情況】
【毫秒級】【默認-1L】【下面示例為 5秒鍾】
3.fixedDelay屬性
用來標志 上次定時任務 和 下次定時任務 之間的延時時長【需要等到上次定時任務執行完成 后,經過延時時長,再執行下次定時任務】
【毫秒級】【默認-1L】【下面示例為 5秒鍾】
4.initialDelay屬性
用來標志,服務啟動后 第一次執行定時任務的延時時長
可以配合上面兩個屬性一起使用
【下面標志: 服務啟動后,過10s執行第一次定時任務,之后每過5s執行一次定時任務】