springboot內置定時任務scheduled

1. 開啟springboot定時任務功能

在springboot的主啟動程序添加注解@EnableScheduling

@SpringBootApplication
@EnableScheduling

2. 創(chuàng)建定時任務

新建一個類,該類用戶處理某一業(yè)務類型的定時任務,比如商品系統(tǒng)中,商品分類的各種統(tǒng)計數(shù)據(jù)業(yè)務類CatalogCountScheduler類。注意,該類是需要交給spring容器管理的,所以需要在該類類名上貼上@Component注解
然后就可以創(chuàng)建定時任務了,每個方法代表一個任務,在方法上貼上注解@Scheduled,比如:

 /**
  * 每天凌晨2點鐘執(zhí)行該定時任務
 */
 @Scheduled(cron = "0 0 2 * * ?")
 public void catalogContScheduled(){}

3. @Scheduled注解屬性

1. cron

字段 允許值 允許特殊字符
0-59 - * , /
0-59 - * , /
小時 0-23 - * , /
1-31 - * , ? / L W
1-12或JAN-DEC - * , /
1-7或SUN-SAT - * , ? / L #
留空或1970-2099 - * , /

cron是cornexpression表達式的意思:
cornexpression表達式詳解:
完整字段:[秒] [分] [小時] [日] [月] [周] [年]

字段 允許值 允許特殊字符
0-59 - * , /
0-59 - * , /
小時 0-23 - * , /
1-31 - * , ? / L W
1-12或JAN-DEC - * , /
1-7或SUN-SAT - * , ? / L #
留空或1970-2099 - * , /

注:

  1. *表示所有值,在分鐘里表示每一分鐘觸發(fā)。在小時,日期,月份等里面表示每一小時,每一日,每一月。
  2. ?表示不指定值。表示不關心當前位置設置的值。 比如不關心是周幾,則周的位置填寫??! ≈饕怯捎谌掌诟苁怯兄貜偷乃詢烧弑仨氂幸徽咴O置為?
  3. -表示區(qū)間。小時設置為10-12表示10,11,12點均會觸發(fā)。
  4. ,表示多個值。 小時設置成10,12表示10點和12點會觸發(fā)。
  5. / 表示遞增觸發(fā)。 5/15表示從第5秒開始,每隔15秒觸發(fā)?;蛘?/20,表示每隔20秒執(zhí)行一次。
  6. L 表示最后的意思。 日上表示最后一天。星期上表示星期六或7。 L前加數(shù)據(jù),表示該數(shù)據(jù)的最后一個。星期上設置6L表示最后一個星期五。 6表示星期五
  7. W表示離指定日期最近的工作日觸發(fā)。15W離該月15號最近的工作日觸發(fā)。
  8. .#表示每月的第幾個周幾。 6#3表示該月的第三個周五。

示例:
"0 0 12 * * ?" 每天中午12點觸發(fā)
"0 15 10 ? * *" 每天上午10:15觸發(fā)
"0 15 10 * * ?" 每天上午10:15觸發(fā)
"0 15 10 * * ? *" 每天上午10:15觸發(fā)
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發(fā)
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發(fā)
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發(fā)
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發(fā)
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發(fā)
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發(fā)
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發(fā)
"0 15 10 15 * ?" 每月15日上午10:15觸發(fā)
"0 15 10 L * ?" 每月最后一日的上午10:15觸發(fā)
"0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發(fā)
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發(fā)
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發(fā)
"0 0 */2 * * ?" 每兩個小時

2. fixedRate

上一次開始執(zhí)行時間點向后延遲多少時間執(zhí)行,單位是毫秒。例如:

//上一次開始執(zhí)行時間點向后每隔20秒執(zhí)行一次。
@Scheduled(fixedRate = 20000):

3. fixedDelay

上一次執(zhí)行完畢時間點向后延遲多少時間執(zhí)行,單位是毫秒。例如:

//上一次執(zhí)行完畢時間點向后每隔20秒執(zhí)行一次。
@Scheduled(fixedDelay = 20000):

4. initialDelay

可以和fixedRate、fixedDelay組合使用。例如:

//第一次延遲6秒后執(zhí)行,之后按fixedRate的規(guī)則每20秒執(zhí)行一次。
@Scheduled(initialDelay=6000, fixedRate=20000)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容