web-dev-qa-db-ja.com

毎日1時01分の春のクーロン表現

私は自分のコードをSpring cron式に基づいて決まったスケジュールで実行させようとしています。コードを毎日1:01:amに実行したいと思います。私は次の表現を試みましたが、これは私のために起動しませんでした。ここの構文の何が問題になっていますか?

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

試してみてください。

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

以下に、春のフォーラムからのパターンの例があります。

* "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は "every X"を意味します

?( "特定値なし") - 2つのフィールドのうちどちらか一方に文字を指定し、もう一方には指定しない場合に便利です。たとえば、トリガーをその月の特定の日(たとえば、10日)に起動させたいが、どの曜日になってもかまわない場合は、その日に "10"を入れます。月のフィールドと "?"曜日フィールドに。

シモンズ:それを動作させるために、あなたのアプリケーションのコンテキストでそれを有効にすることを忘れないでください: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#スケジューリングアノテーションサポート

469
gipinani

私のスケジューラのために、私は毎日午前6時に発砲するためにそれを使っています、そして私のクーロン記法は以下の通りです:

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
}

完全なタイムゾーンの値は here から見つけることができます。

注意:私のSpringフレームワークのバージョンは4.0.7です。

71

メソッドに@Scheduled(cron ="0 1 1 * * ?")というアノテーションを付けることができます。

0 - 秒です

1〜1分

その日の1時間.

21
user3298173

Gipinaniの回答から欠けているもの

@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")

これは1.01と13.01で実行されます。パターンなしでジョブを1日に複数回実行する必要がある場合に使用できます。

また、リモートサーバーに配置する場合、zone属性は非常に便利です。これは春4で導入されました。

10

私が気づいたことの一つは、春のCronTriggerはcronではないということです。あなたは7つのパラメータを有効なcron表現(cronmaker.comで検証することができます)にすることができますし、春はそれを受け入れません。ほとんどの場合、最後のパラメータを削除するだけで、すべてうまくいきます。

6
Irlan Cidade

毎日1時01分の春のクーロン表現

@スケジュール(cron = "0 1 1?* *")

詳細については、次の情報を確認してください。

https://docs.Oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

1
MACCXpace