アノテーションインターフェース Scheduled
cron()
、fixedDelay()
、または fixedRate()
属性のいずれかを指定する必要があり、さらにオプションの initialDelay()
も指定する必要があります。1 回限りのタスクの場合は、initialDelay()
を指定するだけで十分です。 アノテーション付きメソッドは引数を受け入れてはなりません。通常、戻り値の型は void
になります。そうでない場合、スケジューラを通じて呼び出されたときに戻り値は無視されます。
リアクティブ Publisher
またはデフォルトの ReactiveAdapterRegistry
によって Publisher
に適応できる型を返すメソッドがサポートされています。Publisher
は、複数の後続のサブスクリプションをサポートする必要があります。返される Publisher
は 1 回だけ生成され、スケジューリングインフラストラクチャは設定に従って定期的にそれをサブスクライブします。パブリッシャーによって発行された値は無視されます。エラーは WARN
レベルで記録されますが、さらなる反復は妨げられません。固定遅延が構成されている場合、固定遅延のセマンティクスを考慮するためにサブスクリプションはブロックされます。
実行時にコルーチンリアクターブリッジ (kotlinx.coroutine.reactor
) が存在する場合、Kotlin サスペンド関数もサポートされます。このブリッジは、リアクティブメソッドの場合と同じように処理される Publisher
にサスペンド機能を適合させるために使用されます (上記を参照)。
@Scheduled
アノテーションの処理は、ScheduledAnnotationBeanPostProcessor
を登録することによって実行されます。これは、手動で実行することも、<task:annotation-driven/>
XML 要素または @EnableScheduling
アノテーションを介して実行する方が便利です。
このアノテーションは繰り返し可能なSEアノテーションとして使用できます。同じメソッドで複数のスケジュールされた宣言が見つかった場合、それぞれ独立して処理され、それぞれに対して個別のトリガーが起動されます。結果として、そのような同じ場所に配置されたスケジュールは重複し、並行してまたはすぐに連続して複数回実行される可能性があります。
このアノテーションをメタアノテーションとして使用して、属性をオーバーライドしたカスタム合成アノテーションを作成できます。
- 導入:
- 3.0
- 作成者:
- Mark Fisher, Juergen Hoeller, Dave Syer, Chris Beams, Victor Brown, Sam Brannen
- 関連事項:
オプション要素のサマリー
修飾子と型オプションの要素説明cron のような表現で、通常の UN*X 定義を継承して、秒、分、時間、日、月、曜日のトリガーを含めます。long
最後の呼び出しの終了から次の呼び出しの開始までの期間を固定して、アノテーション付きメソッドを実行します。最後の呼び出しの終了から次の呼び出しの開始までの期間を固定して、アノテーション付きメソッドを実行します。long
呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。long
fixedRate()
またはfixedDelay()
タスクの最初の実行までに遅延する時間の単位数。fixedRate()
またはfixedDelay()
タスクの最初の実行までに遅延する時間の単位数。このスケジュールされたメソッドを実行するスケジューラを決定するための修飾子。cron 式が解決されるタイムゾーン。フィールドサマリー
フィールドの詳細
CRON_DISABLED
無効なトリガーを示す特別な cron 式値: "-"。これは、主に
${...}
プレースホルダーで使用するためのもので、対応するスケジュールされたメソッドを外部で無効にすることができます。- 導入:
- 5.1
- 関連事項:
要素の詳細
cron
StringSE croncron のような表現で、通常の UN*X 定義を継承して、秒、分、時間、日、月、曜日のトリガーを含めます。例:
"0 * * * * MON-FRI"
は、平日の 1 分間に 1 回(その分で -0 秒)を意味します。左から右に読み取られるフィールドは、次のように解釈されます。
- 秒
- 分
- 時間
- 月の日
- 月
- 曜日
特別な値
"-"
は、主に${...}
プレースホルダーによって解決される外部で指定された値を対象とした無効な cron トリガーを示します。- 戻り値:
- cron スケジュールに解析できる式
- 関連事項:
- デフォルト:
- ""
zone
StringSE zonecron 式が解決されるタイムゾーン。デフォルトでは、この属性は空の文字列です (つまり、スケジューラのタイムゾーンが使用されます)。- 戻り値:
TimeZone.getTimeZone(String)
SE によって受け入れられるゾーン ID、またはスケジューラのデフォルトのタイムゾーンを示す空の文字列- 導入:
- 4.0
- 関連事項:
- デフォルト:
- ""
fixedRate
long fixedRate呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。時間の単位はデフォルトでミリ秒ですが、
timeUnit()
を介してオーバーライドできます。- 戻り値:
- 期間
- デフォルト:
- -1L
fixedRateString
StringSE fixedRateString呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()
で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はfixedDelay()
を使用することをお勧めします) - 既知の
DurationFormat.Style
のいずれか:ISO8601
スタイルまたはSIMPLE
スタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()
をフォールバックとして使用します - 上記のいずれか、Spring スタイルの "${...}" プレースホルダーと SpEL 式を使用
- 戻り値:
- ピリオドを文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration
準拠の値、simple format
準拠の値などです。 - 導入:
- 3.2.2
- 関連事項:
- デフォルト:
- ""
- 単純な整数 -
fixedDelay
long fixedDelay最後の呼び出しの終了から次の呼び出しの開始までの期間を固定して、アノテーション付きメソッドを実行します。時間の単位はデフォルトでミリ秒ですが、
timeUnit()
を介してオーバーライドできます。注: 仮想スレッドでは、固定遅延よりも固定レートと cron トリガーをお勧めします。固定遅延タスクは、
SimpleAsyncTaskScheduler
を使用して単一のスケジューラスレッドで動作します。- 戻り値:
- 遅延
- デフォルト:
- -1L
fixedDelayString
StringSE fixedDelayString最後の呼び出しの終了から次の呼び出しの開始までの期間を固定して、アノテーション付きメソッドを実行します。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()
で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はfixedDelay()
を使用することをお勧めします) - 既知の
DurationFormat.Style
のいずれか:ISO8601
スタイルまたはSIMPLE
スタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()
をフォールバックとして使用します
注: 仮想スレッドでは、固定遅延よりも固定レートと cron トリガーをお勧めします。固定遅延タスクは、
SimpleAsyncTaskScheduler
を使用して単一のスケジューラスレッドで動作します。- 戻り値:
- 遅延を文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration
準拠の値、simple format
準拠の値などです。 - 導入:
- 3.2.2
- 関連事項:
- デフォルト:
- ""
- 単純な整数 -
initialDelay
long initialDelay- 戻り値:
- 初期
- 導入:
- 3.2
- デフォルト:
- -1L
initialDelayString
StringSE initialDelayStringfixedRate()
またはfixedDelay()
タスクの最初の実行までに遅延する時間の単位数。期間文字列にはいくつかの形式があります:
- 単純な整数 -
timeUnit()
で上書きされない限り、デフォルトではミリ秒単位の期間を表すと解釈されます。(その場合はfixedDelay()
を使用することをお勧めします) - 既知の
DurationFormat.Style
のいずれか:ISO8601
スタイルまたはSIMPLE
スタイル - 文字列に明示的な単位が含まれていない場合は、timeUnit()
をフォールバックとして使用します - 上記のいずれか、Spring スタイルの "${...}" プレースホルダーと SpEL 式を使用
- 戻り値:
- 初期遅延を文字列値として指定します。たとえば、プレースホルダ、
java.time.Duration
準拠の値、simple format
準拠の値などです。 - 導入:
- 3.2.2
- 関連事項:
- デフォルト:
- ""
- 単純な整数 -
timeUnit
TimeUnitSE timeUnitfixedDelay()
、fixedDelayString()
、fixedRate()
、fixedRateString()
、initialDelay()
、initialDelayString()
に使用するTimeUnit
SE。デフォルトは
TimeUnit.MILLISECONDS
SE です。この属性は、cron 式、
fixedDelayString()
、fixedRateString()
、initialDelayString()
を介して提供されるDuration
SE 値では無視されます。- 戻り値:
- 使用する
TimeUnit
- 導入:
- 5.3.10
- デフォルト:
- MILLISECONDS
scheduler
StringSE schedulerこのスケジュールされたメソッドを実行するスケジューラを決定するための修飾子。デフォルトは空の文字列で、デフォルトのスケジューラを示します。
特定の
TaskScheduler
またはScheduledExecutorService
SE Bean 定義の修飾子の値 (または Bean 名) と照合して、使用するターゲットスケジューラを決定するために使用できます。- 導入:
- 6.1
- 関連事項:
- デフォルト:
- ""