Spring cron式に基づいて、コードを一定のスケジュールで実行しようとしています。毎日1:01:amにコードを実行してほしい。次の式を試してみましたが、気になりませんでした。ここの構文の何が問題になっていますか?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Spring cron式に基づいて、コードを一定のスケジュールで実行しようとしています。毎日1:01:amにコードを実行してほしい。次の式を試してみましたが、気になりませんでした。ここの構文の何が問題になっていますか?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
回答:
試してみてください:
@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ごと」を意味します
?
(「特定の値なし」)-文字が許可されている2つのフィールドの一方に何かを指定する必要があるが、もう一方は指定できない場合に役立ちます。たとえば、月の特定の日(たとえば、10日)にトリガーを起動したいが、何曜日が何であるかは気にしない場合、その日に「10」を入力します。月のフィールドと「?」曜日フィールド。
PS:これを機能させるには、アプリケーションコンテキストで有効にしてください:https : //docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-注釈サポート
私のスケジューラーでは、それを毎日午前6時に起動するために使用しており、私のcron表記は次のとおりです。
0 0 6 * * *
1:01:amが必要な場合は、
0 1 1 * * *
スケジューラの完全なコード
@Scheduled(cron="0 1 1 * * *")
public void doScheduledWork() {
//complete scheduled work
}
** 非常に重要
スケジューラの発火時刻の正確さを確認するには、次のようにゾーン値を設定する必要があります(私はイスタンブールにいます):
@Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
public void doScheduledWork() {
//complete scheduled work
}
ここから完全なタイムゾーン値を見つけることができます。
注:私のSpringフレームワークのバージョンは、4.0.7.RELEASEです。
<task:scheduled ref="paypalCronJob" method="runTask" cron="0 0 6 * * * ?"/>
か?
メソッドでアノテーションを付けることができます@Scheduled(cron ="0 1 1 * * ?")
。
0-秒
1〜1分
1-時間。
gipinaniの答えに欠けているもの
@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")
これは1.01と13.01で実行されます。1日に複数回パターンなしでジョブを実行する必要がある場合に使用できます。
また、リモートサーバーで展開を行う場合、zone属性は非常に役立ちます。これはSpring 4で導入されました。
私が気付いたのは、春のCronTriggerはcronではないということです。有効なcron式(cronmaker.comで検証できるもの)に7つのパラメーターが含まれ、それを受け入れない場合があります。ほとんどの場合、最後のパラメーターを削除するだけですべてが正常に機能します。
毎日の春のcron式1:01:am
@Scheduled(cron = "0 1 1?* *")
詳細については、次の情報を確認してください。
https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm