Spring Scheduling

Annotation

  • @Scheduled : Spring で定時(ていじ) タスクを作成(さくせい) するために使用(しよう) します。
    • 属性(ぞくせい) (fields) :
      • cron : Cron (しき)使用(しよう) して実行(じっこう) 頻度(ひんど)定義(ていぎ)
      • fixedDelay : 前回(ぜんかい) のタスク終了(しゅうりょう) から次回(じかい) のタスク開始(かいし) までの固定(こてい) 遅延(ちえん)パラメータ: long (ms)
      • fixedDelayString : fixedDelay(おな) じですが、文字列(もじれつ)${...} 設定(せってい) をサポート。
      • fixedRate : (ふた) つのタスク開始(かいし) (かん)固定(こてい) 頻度(ひんど)前回(ぜんかい) のタスク完了(かんりょう)() たない。
      • fixedRateString : 同上(どうじょう)文字列(もじれつ) 設定(せってい)
      • initialDelay : 最初(さいしょ) のタスク実行前(じっこうまえ)遅延(ちえん) 時間(じかん)
      • initialDelayString : 同上(どうじょう)文字列(もじれつ) 設定(せってい)
      • timeUnit : 時間(じかん) 単位(たんい)指定(してい) 、デフォルトは ms (ミリ(びょう) )。
      • zone : タイムゾーン (Timezone) を指定(してい)

Cron 構文(こうぶん) (れい)

  • 0 0 0 * * ? : 毎日(まいにち) 午前(ごぜん) 0()実行(じっこう)
  • 0 0/5 * * * ? : 5(ふん) ごとに実行(じっこう)
  • 0 0 12 ? * MON-FRI : 平日(へいじつ)正午(しょうご) 12()

ベストプラクティス

  1. 非同期(ひどうき) 実行(じっこう) : デフォルトでは、@Scheduled単一(たんいつ) スレッドで実行(じっこう) されます。複数(ふくすう) のタスクがある場合(ばあい) は、TaskScheduler設定(せってい) するか @Async使用(しよう) してください。
  2. 外部化(がいぶか) 設定(せってい) : Cron (しき)${property.name} 構文(こうぶん)application.yml抽出(ちゅうしゅつ) することを推奨(すいしょう) します。
  3. 例外(れいがい) 処理(しょり) : 定時(ていじ) タスク(ない)例外(れいがい) がキャッチされない場合(ばあい)後続(こうぞく)実行(じっこう)中断(ちゅうだん) される可能性(かのうせい) があります。