Spring の @Scheduled タスクを5 分ごとに実行する
Spring で「5 分ごと」を表す式は 0 */5 * * * * です。以下に、そのまま使える設定、次回の実行時刻、注意点をまとめます。 Spring の @Scheduled(cron) は秒から始まる 6 フィールドで、指定した日付フィールドはすべて一致する必要があります。
0 */5 * * * *ツールで開く“5 分ごと”
@Scheduled メソッド
@Scheduled
@Scheduled(cron = "0 */5 * * * *", zone = "UTC")
public void every5Minutes() {
// job
}Spring の注意点
秒が先頭Spring の式は秒、分、時、日、月、曜日の 6 フィールドです。5 フィールドの crontab の行は拒否されます。
日と曜日は両方一致が必要0 0 9 1-7 * MON は毎月第 1 月曜日です。crontab では同じフィールドが 1〜7 日または毎週月曜日を意味します。
日曜日は 0 か 7日曜日が 1 の Quartz とは違います。両者の間で式を移すときは名前(MON-SUN)が安全です。
スケジューリングを有効にする設定クラスに @EnableScheduling を付けないと @Scheduled メソッドは動きません。既定ではすべてのタスクが 1 スレッドを共有します。
よくある質問
Spring で「5 分ごと」を表す cron 式は?
0 */5 * * * * です。意味:5 分ごと
Spring のスケジュールはどのタイムゾーンで動きますか?
JVM の既定タイムゾーンです。@Scheduled に zone = "Asia/Tokyo"(任意の IANA 名)を付けると固定できます。
Spring の cron で 30 秒ごとに実行できますか?
できます。Spring には秒フィールドがあります:*/30 * * * * *。
Spring は L や # に対応していますか?
Spring 5.3 から対応しています。日フィールドで L、LW、L-n、nW、曜日フィールドで dL と d#n が使えます。