Spring Boot中使用@Scheduled創建定時任務

我們在編寫Spring Boot應用中經常會遇到這樣的場景,比如:我需要定時地發送一些短信、郵件之類的操作,也可能會定時地檢查和監控一些標志、參數等。

創建定時任務

在Spring Boot中編寫定時任務是非常簡單的事,下面通過實例介紹如何在Spring Boot中創建定時任務,實現每過5秒輸出一下當前時間。

  • 在Spring Boot的主類中加入@EnableScheduling注解,啟用定時任務的配置

@SpringBootApplication
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

  • 創建定時任務實現類
@Component
public class ScheduledTasks {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("現在時間:" + dateFormat.format(new Date()));
    }

}
  • 運行程序,控制臺中可以看到類似如下輸出,定時任務開始正常運作了。
2016-05-15 10:40:04.073  INFO 1688 --- [           main] com.didispace.Application                : Started Application in 1.433 seconds (JVM running for 1.967)
現在時間:10:40:09
現在時間:10:40:14
現在時間:10:40:19
現在時間:10:40:24
現在時間:10:40:29522
現在時間:10:40:34

關于上述的簡單入門示例也可以參見官方的Scheduling Tasks

@Scheduled詳解

在上面的入門例子中,使用了@Scheduled(fixedRate = 5000) 注解來定義每過5秒執行的任務,對于@Scheduled的使用可以總結如下幾種方式:

  • @Scheduled(fixedRate = 5000) :上一次開始執行時間點之后5秒再執行
  • @Scheduled(fixedDelay = 5000) :上一次執行完畢時間點之后5秒再執行
  • @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延遲1秒后執行,之后按fixedRate的規則每5秒執行一次
  • @Scheduled(cron="*/5 * * * * *") :通過cron表達式定義規則

完整示例Chapter4-1-1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,971評論 6 342
  • 博客原文 徒手翻譯spring framework 4.2.3官方文檔的第33章,若有翻譯不當之處請指正。 定時任...
    rabbitGYK閱讀 5,683評論 4 24
  • 16-summer#12.12#打卡 “我的白日夢,在夢里。放肆的青澀,放縱的狂熱。是否你我都記得”這是《白日夢》...
    寫故事的阿夏閱讀 337評論 0 0
  • 橙先生的餐前故事系列——每道美食都該有她自己的故事 阿穆今年30大多,始終沒找到女朋友,也許是因為他的收入微薄,也...
    野廚橙先生閱讀 638評論 1 7