アノテーションインターフェース 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呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。呼び出しの間隔を固定して、アノテーション付きメソッドを実行します。longfixedRate()またはfixedDelay()タスクの最初の実行までに遅延する時間の単位数。fixedRate()またはfixedDelay()タスクの最初の実行までに遅延する時間の単位数。このスケジュールされたメソッドを実行するスケジューラを決定するための修飾子。cron 式が解決されるタイムゾーン。
フィールドの詳細
CRON_DISABLED
無効なトリガーを示す特別な cron 式値: "-"。これは、主に
${...}プレースホルダーで使用するためのもので、対応するスケジュールされたメソッドを外部で無効にすることができます。- 導入:
- 5.1
- 関連事項:
要素の詳細
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()に使用するTimeUnitSE。デフォルトは
TimeUnit.MILLISECONDSSE です。この属性は、cron 式、
fixedDelayString()、fixedRateString()、initialDelayString()を介して提供されるDurationSE 値では無視されます。- 戻り値:
- 使用する
TimeUnit - 導入:
- 5.3.10
- デフォルト:
MILLISECONDS
scheduler
StringSE schedulerこのスケジュールされたメソッドを実行するスケジューラを決定するための修飾子。デフォルトは空の文字列で、デフォルトのスケジューラを示します。
特定の
TaskSchedulerまたはScheduledExecutorServiceSE Bean 定義の修飾子の値 (または Bean 名) と照合して、使用するターゲットスケジューラを決定するために使用できます。- 導入:
- 6.1
- 関連事項:
- デフォルト:
""