springbootは注釈、インターフェースを通じてタイミングタスクを作成します。


プロジェクトではタイミングタスクがよく使われます。ある人はquartzを使っています。ある人は自分でスケジュールプラットフォームを作っているかもしれません。springbootはタスクを決めるサポートに対して、タイミングタスクの作成を簡単にします。
springbootにおけるタイミングタスクの作成
springbootのタイミングタスクの作成は、ここでは主に2つの方法を言います。
  • は注釈によって
  • を作成する。
  • は、springbootで提供されるインターフェースを通じて
  • を実現する。
    springbootは注釈によってタイミングタスクを作成します。
    まずpomを導入します

    クラスでは主に@EnbleScheduling注解を使用しています。org.springframe ework:spring-contextというバッグの下にあります。

    org.springframe ewarkを紹介します。spring-contextというカバンが使えます。
    
    <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
    </dependency>
    
    コードを直接入れて栗を一つください。
    
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @createdTime: 2020/4/7 16:00.
     * @version: 1.0 .
     */
    //     @EnableScheduling       
    @Component
    @EnableScheduling
    public class TestTask {
    
        private static ThreadLocal<SimpleDateFormat> dateFormat =
                ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    
    
        //      @Scheduled            
        @Scheduled(cron = "0/10 * * * * ?")
        private void task1() {
            System.err.println("       ,     :" + dateFormat.get().format(new Date()));
        }
    }
    
    実行結果を見ます。

    クラスで@EnbaleSchedulingを使ってタイムミッションを開いていますが、@Componentを使っているのはスプリング容器に注入するためです。ここで@Componentを使わないと注入しないですか?試したことがないです。試した仲間がいます。
    具体的にタイミングを合わせて実行する方法には、@Schduledの注釈を使って、この注釈の中のパラメータはいろいろあります。これはcron式を使っています。ここでこの注釈のパラメータを紹介しましょう。
    @Schduled注解の各パラメータ
  • cron
  • 使用方法:@Schduled(cron=「0/10***?」)
    ソースコードの定義:Stering cron()default";
    説明:cron表現は、私たちが日常的に使うcronです。具体的には貼り出さないです。
  • zone
  • 使用方法:@Schduled(zone=「GMT+08:00」)
    ソースコードの定義:Stering zone()default";
    説明:タイムゾーン、cron表現はこのタイムゾーンに基づいて解析します。デフォルトは空です。アプリケーションのあるサーバーのタイムゾーンを取っています。普通は記入しなくてもいいです。jdkのTimeZoneと同じシステムを使っています。具体的には言いません。
  • fixedDelay
  • 使用方法:@Scheduled(fixed Delay=1)
    ソースコードの定義:long fixed Delay()default-1
    説明:前回の実行が終わりました。どれぐらいの時間を置いてから実行しますか?単位はミリ秒です。
  • fixed DelayString
  • 使い方:
    @Schduled(fixed DelayString=「1」)
    @Scheduled(fixed DelayString=「${プロファイル内の値}」)
    ソースコードの定義:Stering fixed DelayString()default";
    説明:fixedDelayと同じで、stringタイプの埋めることができます。単位はミリ秒です。配置ファイルの中の値を使って、使い方はspring注入プロファイルの使い方と同じです。
  • fixedRate
  • 使用方法:@Scheduled(fixedRate=1)
    ソースコードの定義:long fixedRate()default-1;
    説明:前回の実行開始後、どれぐらいの時間を置いてから実行しますか?単位はミリ秒です。
  • fixedRateString
  • 使い方:
    @Scheduled(fixed RateString=「1」)
    @Scheduled(fixedRateString=「{プロファイル内の値}」)
    ソースコードの定義:Stering fixed RateString()default";
    説明:fixedRateと同じで、stringタイプの埋めることができます。単位はミリ秒です。配置ファイルの中の値を使って、使い方はspring注入プロファイルの使い方と同じです。
  • initial Delay
  • 使用方法:@Schduled(initial Delay=1)
    ソースの定義:long initial Delay()default-1;
    説明:前回の一回目の実行後、どれぐらいの時間を置いてから実行しますか?単位はミリ秒です。
  • initial DelayString
  • 使い方:
    @Schduled(initial DelayString=「1」)
    @Scheduled(initial DelayString=「{プロファイル内の値}」)
    ソースコードの定義:Stering initial DelayString()default";
    説明:initial Delayと同じで、stringタイプの埋めることができます。単位はミリ秒です。配置ファイルの中の値を使って、使い方はspring注入プロファイルの使い方と同じです。
    springbootはポートを通してタイミングタスクを作成します。
    インターフェースを介してタイミングを作成すると、比較的柔軟になります。タイミングcron表現はコードの注釈に書かなくてもいいです。データベースなどの記憶システムに格納することで、インターフェースでこの構成の表現を取得することができます。このように簡単なタスクスケジュールプラットフォームを実現できます。データベース配置によって、タイミングタスクの実行を管理することができます。
    インターフェースSchduling Configrerを実現します。
    主に使っているのはこのインターフェースSchenduling Configrerです。彼はorg.springframe ebook.scheduling.annotations.Schheduling Configrerというパッケージパスです。実はすべてorg.springframe ork:spring-contextの下にあります。

    org.springframe ewarkを紹介します。spring-contextというカバンが使えます。
    
    <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
    </dependency>
    
    主な方法
    configureTaskys方法を複写し、この方法はScheduledTask Registarによってタイミングタスクを追加します。大体の方法では、参加は基本的にスレッドオブジェクトです。後のパラメータは注解と同じです。主にcron式があります。delayは最後に実行されました。どれぐらいの時間を置いてから実行しますか?initialなどはいちいち説明しません。

    コードを直接入れて栗を一つください。
    
    import org.springframework.scheduling.TaskScheduler;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    import org.springframework.scheduling.config.Task;
    import org.springframework.stereotype.Component;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @createdTime: 2020/4/7 18:33.
     * @version: 1.0 .
     */
    @Component
    @EnableScheduling
    public class TestTask2 implements SchedulingConfigurer {
    
        private static ThreadLocal<SimpleDateFormat> dateFormat =
                ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        /**
         * Callback allowing a {@link TaskScheduler
         * TaskScheduler} and specific {@link Task Task}
         * instances to be registered against the given the {@link ScheduledTaskRegistrar}.
         *
         * @param taskRegistrar the registrar to be configured.
         */
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            System.err.println("                       ");
            String cron = "0/10 * * * * ?";
            taskRegistrar.addCronTask(() -> {
                System.err.println("             ,     :" + dateFormat.get().format(new Date()));
            },cron);
        }
    }
    
    ここではconfigureTaskを書き換える方法により、ScheduledTask Registarオブジェクトを使ってタイミングタスクを作成し、表式をデータベースなどから読み込むことができます。デモの時にはそのコードを書かなくてもいいです。簡単なタスクスケジュールを実現することができます。
    実行結果を見ます。

    springbootは定時的な任務を創建してみんなのためにここに言って、みんなを歓迎して交流に来て、文の中のいくつかの間違ったところを指摘して、私に認識を深めさせます。
    締め括りをつける
    以上で、springbootに関して注釈、インターフェースを通じてタイミングタスクを作成する文章を紹介しました。もっと関連のあるspringbootが作成したタイミングタスクの内容は以前の文章を検索したり、下記の関連記事を引き続き閲覧したりしてください。これからもよろしくお願いします。