banner
RustyNail

RustyNail

coder. 【blog】https://rustynail.me 【nostr】wss://ts.relays.world/ wss://relays.world/nostr

SpringBootのScheduled

スケジュール#

機能を実現するために、タイミング機能が必要な場合があります。例えば、定期的にメールを送信したり、プッシュ通知を送信したりする場合などです。

この場合、Scheduledアノテーションを使用する必要があります。

SpringBoot でのスケジュールの有効化#

  • 起動クラスに@EnableSchedulingアノテーションを追加する必要があります。

  • ++Component++ を作成します。

  • スケジュールメソッドを作成し、@Scheduledアノテーションを付けます。

例えば

/**
 * author dqn
 * created at 2018/8/2 - 17:33
 */
@Component
public class TestSchedule {
    Logger logger = LoggerFactory.getLogger(TestSchedule.class);
    /**
     *  cron *  *  *  *  *  *
     *      秒 分 時 日 月 曜日X
     *      0-59 0-59 0-24 1-31 1-12 1-7
     *      まだ一つ空いている位があります、年、1970-2099
     *  定期タスク、cron式に一致するときにトリガーされます
     */
    @Scheduled(cron = "0 * * * * *")
    public void testCommon(){
        logger.info("common "+Instant.now().toString());
    }

    /**
     * fixedDelay後に実行されます
     */
    @Scheduled(fixedDelay = 1000)
    public void testFixDelay(){
        logger.info("delay "+Instant.now().toString());
    }

    /**
     * 初回はinitDelay後に実行され、その後はfixedDelay後に実行されます
     */
    @Scheduled(initialDelay = 1000,fixedDelay = 1000)
    public void testInitDelay(){
        logger.info("delay "+Instant.now().toString());
    }

    /**
     * 前回の実行後にfixedRate後に実行されます
     */
    @Scheduled(fixedRate = 2000)
    public void testRateDelay(){
        logger.info("rate "+Instant.now().toString());
    }
}

アノテーションの設定#

タイマータスク#

最初のタイプはタイマータスクで、@Scheduledcron値に式を追加して、特定の時間にメソッドを実行します。

cron-like expression#

式は通常次のようになります: * * * * * * *

合計 7 つの位置があり、最後の位置は省略することができます。つまり、6 つの位置だけを設定することもできます。

左から右に順番に、秒、分、時、日、月、曜日 X、です。

それぞれの値は次のようになります:

  • 0-59 秒
  • 0-59 分
  • 0-23 時
  • 1-31 日
  • 1-12 月
  • 1-7 曜日
  • 1970-2099 年

#

0 * * * * ?は、秒が 0 の時にトリガーされ、つまり 1 分ごとに実行されます。

0 0 * * * ?は、分が 0 の時にトリガーされ、つまり 1 時間ごとに実行されます。* 0 * * * *でも同じです。

* * 3 * * ?は、毎日 3 時に実行されます。

* * 3 15 * ?は、毎月 15 日の 3 時に実行されます。?は不確定またはどちらでも可能を意味します。なぜなら、曜日 Xが競合するからです。

* * 3 ? * 1は、毎週月曜日の 3 時に実行されます。対応する日付は?です。

* * 3-5 * * ?は、毎日 3 時、4 時、5 時に実行されます。**-** は範囲(range)を表します。

また、3,6,9はリストの値を表し、2/10は 2 から始まり、10 ずつ増加します。

遅延タスク#

遅延には 2 種類あります。開始後の遅延と完了後の遅延です。

fixedDelay#

fixedDelay は、前回の実行後に指定した時間だけ遅延してから実行されます。

fixedRate#

fixedRate は、前回の開始時から計時を開始し、指定した時間後に実行されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。