Spring Bootジョブ呼び出し

8377 ワード

記事の目次
  • Spring Bootジョブ呼び出し
  • サーバが起動すると、あるジョブが自動的に実行されます.
  • サーバが起動したら、自動的にあるタスクを実行します.
  • Springタイミングタスクの@Schduled cron表現
  • cron
  • を使用しません.
  • おすすめはCron多機能
  • です.
  • 実際の使用シーン
  • Spring Bootジョブ呼び出し
    サーバー起動時に自動的にタスクを実行します.SpringBootは、2つの方法を提供し、1つのコンポーネント(@Component)を作成し、ApplicationRunnerを実現するか、またはCommandLineRunnerを実装するか、あるいは、2つの方法を提供する.
    二重に書いたルン方法のパラメーターリストはあまり使われていません.
    複数のタスクの指定順序があれば@Order(1)はコンポーネントに注釈を付けると順序を決定することができる.
    このマークはSpringです.
    二つの方法が実現するインターフェースは全部bootのです.
    どのように複数のFilterの順序を決定しますか?filterName辞書によって順次実行される.
    どのようにタスクの実行順序を指定しますか?@Orderを使ってタスクの実行順序を指定します.
    私たちはタスクを起動する時にデータベースなどの操作を追加できます.OneTask.java
    package vip.javer.task.task;
    
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    /** * Class Describe: * * @author biuaxia * @date 2018/12/14 10:05 */
    @Component
    @Order(2)
    public class OneTask implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args) throws Exception {
            System.out.println("****Task===One****");
        }
    }
    
    TwoTask.java
    package vip.javer.task.task;
    
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    /** * Class Describe: * * @author biuaxia * @date 2018/12/14 10:05 */
    @Component
    @Order(1)
    public class TwoTask implements CommandLineRunner {
        @Override
        public void run(String... args) throws Exception {
            System.out.println("****Task===Two****");
        }
    }
    
    ここでは@Orderを設定することにより順番が変更されましたので、2は先に実行し、1は後で実行します.
    サーバーが起動したら、自動的にタスクを実行します.
    以前Springを使用していた場合、第三のコンポーネントquartzを使用して類似の需要を達成した.
    SpringとQuartzの統合について知る機会があります.
    Bootにはstatusが内蔵されています.
    実例: 5sジョブプリント出力の現在時間を呼び出します.
  • 新規Taskクラス
  • カスタム方法
  • 書き方論理
  • クラスで@Component
  • 方法上@Schduled
  • `
    @Schduled(cron=「0/5***?」)
    public void exe(){
    sout(「自動実行タスク3,時間:」+new Date();
    )
    `
    ここに来たらどうやって起動しますか?
  • スタートクラスに@EnableSchedulingを追加すればいいです.
    これで起動できます.5 sごとに印刷します.
    例えば5 sで一回実行します.
    @Schduled(cron=「5***?」)
    例えば29分5秒ごとに一回実行します.
    @Schduled(cron=「5 29***?」)
    Springタイミングタスクの@Schduled cron表現
    1つのcron は少なくとも6つの(7つの可能性もある)スペースで区切られた時間要素がある.
    順を追って
    秒(0-59)
    分(0-59)
    時(0-23)
    日(月)(0-31ですが、あなたの月の日数を考慮してください.)
    月(0-11)
    日(日)(1-7 1=SUNまたはSUN、MON、TUTE、WED、THU、FRI、SAT)
    7年(1970-2099)
    文字はすべての可能な値を表しますので、式(月)では毎月、**は分則では毎分、などを表します.
    ?文字は「日」(月)と「日」の2つのサブ表現にのみ使用されます.値を指定しないことを表します.2つのサブ表現のうちの1つが指定されている場合、衝突を避けるために他のサブ表現の値を設定しますか?
    たとえば*のもう一つは?
    **L文字は、日(月)と日(日)の2つのサブ表現に使用されます.単語「last」の誤記ですが、2つのサブ表現の意味は異なります.
  • 天(月)サブ表現では、Lは一ヶ月の最後の日を表します.
  • 日曜日(日曜日)のサブ表現では、Lは一週間の最後の日、つまりSAT
  • を表します.
    Lの前に具体的な内容があれば、彼は他の意味があります.
    例えば6Lは今月の最後から六日間を表し、F R I Lは今月の最後の金曜日を表しています.
    なお、Lパラメータを使用する場合は、リストや範囲を指定しないでください.これは問題になります.
    /文字を使って数値の増分を指定します.
    例えば、サブ表現(分)で0/15は、0分目から15分ごとに実行されます.
    また、例えば、サブ表現(分)の3/20は、3分目から20分ごとに(3、23、43と同じ意味で)行われることを表しています.
    クロンを使わない
    5000ミリ秒ごとに呼び出し(すなわち5 S)@Scheduled(fixedRate=5000)を一回呼び出します.
    @Scheduled(fixedRate=5000,initial Delay=2000)は2 sを待ってから5 sごとに呼び出します.
    おすすめはやはりCron多機能です.
    実際の使用シーン
  • 毎日の天気予報
  • ユーザの誕生日にメールを送るなんて
  • 毎晩12時に帳簿をまとめます.
    もしあなたが使うSpringバージョンが3.0以上ならEnableSchedulingを使用できます.