ホームページ  >  記事  >  Java  >  SpringBootでタイマーを実装する方法

SpringBootでタイマーを実装する方法

王林
王林転載
2023-05-10 14:58:221125ブラウズ

タイマーの実装

Spring Boot スタートアップ クラス コード、タイマー機能を有効にする @EnableScheduling アノテーションを追加

@SpringBootApplication   
@EnableScheduling   // 开启定时功能
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

スケジューリング タスク コード、タスク クラスを @Component アノテーションに挿入する必要があります。 IoC コンテナ

@Component
public class TestSchedulingTask {
    // 这个cron表达式代表从0秒开始,每过3秒执行一次。
    @Scheduled(cron = "0/3 * * * * ?")
    public void test(){
        // 大家可以根据公司的业务来实现,更希望是@Autowrite注入service层的接口,业务逻辑写在service层中。
        // 这里测试我就输出当前系统时间了...
        Date date  = new Date(System.currentTimeMillis());
        String rule = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(rule);
        String format = simpleDateFormat.format(date);
        System.out.println(format);
    }
}

では、各タスク メソッドに @Scheduled アノテーションを付ける必要があり、cron 式を指定する必要があることに注意してください。

オンラインで cron 式を生成する Web サイトもあるので安心してください。コンソールが出力する結果を見てみましょう。

SpringBootでタイマーを実装する方法

cron 式の詳細説明

cron 式

フィールド 範囲 使用できる文字
0-59 ,/-*
分(分) 0-59 ,/-*
時(時間) 0- 23 ,/-*
日付 (月の日) 1-31(月の不一致を考慮する必要があります) ,/-*?LW
month 1-12 (対応する英語の略語も使用できます) , /-*
曜日 1-7 ,/-*?L
年(年) これは基本的に使用されません これは基本的に使用されません

使用できる文字 説明:

、 : 複数の値を含む列挙です。たとえば、秒の 5 と 20 は、5 秒と 20 秒でのトリガーを表します。

/: 値 1/値 2。値 1 は開始時刻を表し、値 2 は、たとえば私の場合、0 秒から開始して 3 秒ごとにトリガーする頻度を表します。

-: 範囲値 (どのくらいの長さからどのくらいの長さまで)。

##: すべての範囲に共通。

?: 日付と週にのみ存在します。毎月 2 日にトリガーしたい場合、週に * を使用すると、毎日トリガーされるため、バグが発生します。それは必要ですか?交換する *。

L: 日付と週に表示される最後を意味します。たとえば、日付で L を使用すると月の最終日を意味し、週で 3L を​​使用すると最後の水曜日にトリガーされることを意味します。

W: 日付で使用される営業日を示します。9W を使用する場合、9 日が月曜日 1 ~ 5 に該当する場合は直接トリガーされます。9 日が土曜日の場合は、8 日にトリガーされます。 9 日が日曜日の場合、月曜日にトリガーされます。最初のトリガーはトリガー番号 10 です。

以上がSpringBootでタイマーを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。