Spring Scheduling
Annotation
@Scheduled: 用於在 Spring 中建立定時任務。- 屬性 (fields) :
cron: 使用 Cron 表達式定義執行頻率。fixedDelay: 在上一次任務 結束 與下一次任務 開始 之間的固定延遲。參數: long (ms)fixedDelayString: 與fixedDelay相同,但支援使用字串或${...}配置。fixedRate: 兩次任務 開始 之間的固定頻率。不等待上一次任務完成。fixedRateString: 同上,字串配置。initialDelay: 第一次任務執行前的延遲時間。initialDelayString: 同上,字串配置。timeUnit: 指定時間單位,預設為ms(毫秒)。zone: 指定時區 (Timezone)。
- 屬性 (fields) :
Cron 語法範例
0 0 0 * * ?: 每天凌晨 0 點執行。0 0/5 * * * ?: 每隔 5 分鐘執行一次。0 0 12 ? * MON-FRI: 每個工作日的正午 12 點。
最佳實踐
- 異步執行: 預設情況下,
@Scheduled是在單一線程中執行的。若有多個任務,請配置TaskScheduler或使用@Async。 - 外部化配置: 推薦使用
${property.name}語法將 Cron 表達式提取至application.yml中。 - 異常處理: 定時任務中的異常如果不被捕捉,可能會導致後續執行中斷。