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