大家好,我是 "為了拿到金角獎盃而努力著" 的文毅青年 - Kai
Old soldiers never die. They just fade away.
程式設計的用意就是在於處理重複性高、須定時或不定時的作業項目,從而替人類節省許多時間與精力,對於工程師來說提供 API 就算是一個處理不定時作業的方式。
但定時的部份我們該如何處理呢??
Spring 作為一個強大的 Java EE 框架,當然也有提供定時作業的套件可以使用了。
TimerTask 和 CronJob 是以往大家常見用於 Java 設計定時執行程式時候的套件。
在 Spring 中將會使用 @Scheduled 來執行所有的定時作業程式。
在 @Scheduled 中我們可以設定的參數包含以下:
參數 | 說明 | 範例用法 |
---|---|---|
fixedDelay | 單位 毫秒;設定間隔,程式會在上一次執行後,經過設定時間再次執行 | fixedDelay = 1000 每執行一次後停1秒 |
fixedRate | 單位 毫秒;設定頻率,程式會在第一次啟動後,以固定的頻率執行,無論前一次執行是否結束,都會強制執行新的一輪 | fixedRate = 1000 每秒執行一次 |
initialDelay | 單位 毫秒;設定在經過設定時間後執行 | initialDelay = 1000 1秒後開始執行 |
cron | CronJob 的時間設定方式;"秒 分 時 每月特定日期 月 每週特定星期",前五項可用 星號* 表示該設定的所有單位都允許;每周特定星期必須使用 問號? | 1. "5 * * * * ?" 每5秒執行一次 2. "* * * 5 * ?" 每月5號執行一次 |
Zone | 時區設定 | Zone="Asia/Taipei" 將時區設定為台灣 台北時間 |
fixedDelayString | 取自設定在 XML 中的參數作為 fixedDelay | fixedDelayString = "${fixedDelay.in.milliseconds}" |
fixedRateString | 取自設定在 XML 中的參數作為 fixedRate | fixedRateString = "${fixedRate.in.milliseconds}" |
cron (XML) | 取自設定在 XML 中的參數作為 cron | cron = "${cron.expression}" |
Scheduler.java
切記勿必要在 springbootApplicationStarter.java 中增加 @EnableScheduling 的設定,這樣 app 才會在啟動的同時去執行 Schedule works
這期簡單介紹了如何使用 Spring 達到定時作業的處理方式,多少可以幫忙工程師減輕一些設定上的麻煩。
Spring Boot
,w3HexSchool