毎日午前1時1分に実行するSpring cron式 質問する

毎日午前1時1分に実行するSpring cron式 質問する

Spring cron 式に基づいて、固定スケジュールでコードを実行しようとしています。毎日午前 1:01 にコードを実行したいのですが、次の式を試しましたが、うまくいきませんでした。この構文のどこが間違っているのでしょうか?

@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
    // ...
}

ベストアンサー1

次を試してください:

@Scheduled(cron = "0 1 1 * * ?")

以下に、Spring フォーラムからのサンプルパターンを示します。

* "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 8,10 * * *" = 8 and 10 o'clock of every day.
* "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock 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 式は 6 つのフィールドで表されます。

second, minute, hour, day of month, month, day(s) of week

(*)いずれかに一致することを意味します

*/X「すべてのX」を意味する

?(「特定の値なし」) - 文字が許可されているが、もう 1 つのフィールドでは許可されていない 2 つのフィールドの 1 つに何かを指定する必要がある場合に便利です。たとえば、トリガーを特定の日 (たとえば 10 日) に起動したいが、それが何曜日であるかは気にしない場合は、月日フィールドに「10」、曜日フィールドに「?」を入力します。

PS: これを動作させるには、アプリケーション コンテキストで有効にすることを忘れないでください。https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support

おすすめ記事