亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

定時任務如何在Spring Boot 項目中實現

發布時間:2020-11-19 16:45:49 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

定時任務如何在Spring Boot 項目中實現?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

創建定時服務

一般來說定時服務會寫在一個Component里,方便管理。對于定時任務,我們其實只要在需要定時執行的函數前加上 @Scheduled 注解,比如下面這樣:

@Component
public class ScheduledTask{
  @Scheduled(fixedRate = 5000)
  public void scheduledTask(){
    //do sth...
  }
}

與此同時,我們還要在項目的啟動文件里配置上 @EnableScheduling 注解,告訴項目我們是支持定時任務的:

@SpringBootApplication
@EnableScheduling
public class LotteryApplication{
 public static void main(String[] args){
 SpringApplication.run(LotteryApplication.class, args);
 }
}

這樣我們的函數就能定時執行了。

Scheduled參數

Scheduled主要支持 fixRate , fixDelay , cron , initialDelay 這些參數,下面做簡要說明。

fixRate和fixDelay

fixRate和fixDelay參數都指定了函數每隔某個毫秒數執行一次,但是他們之間也有細小的差別。

fixRate

fixRate的計時是相對于系統時間的,也就是一定相隔會固定時間執行。

fixDelay

fixDelay的計時是相對于上一次調用的時間的,因此他受其他程序調用的影響,如果該函數在其他地方被手動調用,那么這個計時器就會重新計時。

initialDelay參數

initialDelay參數是個額外參數,比較簡單,就是指定從項目開始運行到該函數首次被調用的執行時間,以毫秒計。

如果不指定這個參數,這個值就是-1,也就是程序開始時不執行。

在不知到initialDelay這個參數的時候為了讓程序啟動時立即調用該函數,我讓這個定時類繼承了 InitializingBean 并在重寫的 afterPropertiesSet 方法中手動調用了這個函數。。。現在看起來還真是愚蠢。。。

cron

這個Cron是最復雜也是高度自定義化的定時工具,在Linux系統里也有類似的crontab命令。他其實是更加細致的定義了定時任務,以一個字符串的形式進行表示。

在SpringBoot中,一個cron字符串是由六個部分以空格組成的字符串,文檔中的例子是這樣的:

"0 0 * * * *" = the top of every hour of every day.
"*/10 * * * * *" = every ten seconds.
"0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
"0 0 6,19 * * *" = 6:00 AM and 7:00 PM every day.
"0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day.
"0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
"0 0 0 25 12 ?" = every Christmas Day at midnight

六個部分分別表示秒、分、時、日、月、周。

他支持'-‘表示范圍,'*'表示通配,'/‘表示在左邊的時間匹配后間隔右邊的時間,'?'一般表示周的通配。

具體的使用方法還要參考相關文檔。

網上有很多類似 Cron表達式測試工具 這樣的測試工具,方便我們測試自己寫的Cron表達式。

下面一個例子表示每隔五分鐘執行一次:

@Scheduled(cron = "0 0/5 * * * ?")
public void fiveMinutes(){
  //do sth.
}

注意

在實際使用Scheduled注解時,我們一定要指定且僅僅指定fixRate、fixDelay、cron當中的一個,否則肯定會導致錯誤。當然,我們可以任意指定initialDelay參數。

看完上述內容,你們掌握定時任務如何在Spring Boot 項目中實現的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平罗县| 油尖旺区| 岐山县| 龙南县| 宜春市| 桃江县| 当阳市| 兖州市| 高青县| 安泽县| 金秀| 鹤壁市| 渭源县| 九台市| 永顺县| 关岭| 黄骅市| 丰城市| 怀宁县| 梧州市| 弥勒县| 蒙自县| 万源市| 旺苍县| 阆中市| 扬中市| 乌拉特前旗| 陈巴尔虎旗| 和平县| 瓦房店市| 内丘县| 渭南市| 西林县| 乌审旗| 奎屯市| 文昌市| 崇明县| 昌都县| 大田县| 宜川县| 海林市|