検索
ホームページJava&#&チュートリアルSpring スケジュールされたタスクの使用手順

Spring スケジュールされたタスクの使用手順

Jun 30, 2017 am 10:37 AM
spring使用タイミング

1.分類

  • 実装テクノロジーの観点から見ると、現在 3 つの主要なテクノロジーがあります:

  1. Java 独自の java.util.Timer クラス。このクラスを使用すると、java.util.TimerTask タスクをスケジュールできます。この方法を使用すると、指定した時間ではなく、特定の頻度でプログラムを実行できます。

  2. Quartz を使用します。Quartz は、指定した時間または頻度でプログラムを実行できるようにする比較的強力なスケジューラーです。設定は少し複雑です。

  3. Spring 3.0 以降に付属するタスクは軽量の Quartz とみなすことができ、Quartz よりもはるかに簡単に使用できます。

  • ジョブクラスの継承方法に関しては、次の 2 つのカテゴリに分類できます:

  1. ジョブ クラスは、Quartz などの特定のジョブ クラスの基本クラスから継承する必要があり、継承する必要があります。 org.springframework.scheduling .quartz.QuartzJobBean から; java.util.Timer は java.util.TimerTask から継承する必要があります。

  2. ジョブ クラスは通常の Java クラスであり、基本クラスから継承する必要はありません。

注: すべてのクラスは共通クラスであり、事前に特別に処理する必要がないため、個人的には 2 番目の方法を使用することをお勧めします。

  • タスクスケジューリングのトリガータイミングから、ジョブに使用されるトリガーは主に以下の2種類があります:
  1. 指定時間ごとにトリガー、Quartzで対応 トリガーは: org .springframework.scheduling.quartz.SimpleTriggerBean

  2. は、指定された時間ごとに 1 回トリガーされます。 Quartz の対応するスケジューラーは次のとおりです。 org.springframework.scheduling.quartz.CronTriggerBean

注: 各タスクがこれら 2 つのトリガーを使用できるわけではありません。たとえば、java.util.TimerTask タスクは最初のタスクのみを使用できます。 Quartz と Spring タスクは両方とも、これら 2 つのトリガー条件をサポートできます。

2.使用方法

QuartzやSpringタスクなど、各タスクスケジューリングツールの使い方を詳しく紹介します。

Quartz

最初のタイプのジョブ クラスは、特定の基本クラス org.springframework.scheduling.quartz.QuartzJobBean を継承します。

ステップ 1: ジョブ クラスを定義する

Java コード Spring スケジュールされたタスクの使用手順
  1. import org.quartz.JobExecutionContext

  2. import またはg.quartz.JobExecutionException

  3. import org.springframework.scheduling.quartz.QuartzJobBean;

  4. public class Job1 extends QuartzJobBean {

  5. private
  6. int timeout;

  7. プライベート静的int i =

  8. //スケジューリングファクトリーがインスタンス化された後、タイムアウト時間後にスケジューリングが開始されます

    public
  9. void setTimeout(
  10. int timeout) {

  11. this.timeout = タイムアウト }

  12. /**
  13. * スケジュールされる特定のタスク

  14. */

  15. @オーバーライド

  16. protected

    voidexecuteInternal (JobExecutionContext コンテキスト)
  17. この行 JobExecutionException {
  18. System.out.println("スケジュールされたタスクが実行中です...")

  19. }

  20. ステップ 2: Spring 構成ファイルでジョブ クラス JobDetailBean

  21. Xml コードを構成します
    1. beanname="job1"class="org.springframework.scheduling.quartz.JobDetailBean"> プロパティ

    2. name=
    3. "jobClass"

      value="com.gy.Job1" /> property

    4. name=
    5. "jobDataAsMap"

      &g マップ

    6. >
    7. entry

    8. key=
    9. "timeout"

      value="0" /& gt;

      地図
    10. >
    11. プロパティ
    12. >
    13. 説明: org.springframework.scheduling.quartz.JobDetailBean には 2 つの属性があります。jobClass 属性は Java コードで定義するタスク クラスであり、jobDataAsMap 属性はタスク クラスに注入する必要がある属性値です。

    14. ステップ 3: ジョブ スケジューリングのトリガー方法 (トリガー) を構成する

      Quartz には、org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling という 2 つのジョブ トリガーがあります。

      最初の SimpleTriggerBean は、30 分ごとに実行するなど、特定の頻度でのタスクの呼び出しのみをサポートします。
    設定方法は以下の通りです:

Xmlコード

bean id=

"simpleTrigger"

class=

"org.springframework.scheduling .quartz.SimpleTriggerBean"

>
Spring スケジュールされたタスクの使用手順
  1. プロパティname="jobDetail" ref="job1"

  2. < ;property name="startDelay" value="0" /> property

  3. name=
  4. "repeatInterval"

    value="2000" /> bean>

  5. 2 番目の CronTriggerBean は、毎日 12:00 に 1 回実行するなど、指定した時間に 1 回実行することをサポートします。 設定方法は以下の通りです: Xmlコード

    1. beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean">

  6. プロパティ name="jobDetail" ref="job1"

  7. >

  8. < ;

    プロパティname="cronExpression" value="0 0 12 * * ? />

  9. cronExpression 式の構文については、付録を参照してください。

ステップ 4: スケジューリングファクトリーを構成する

Xml コード
Spring スケジュールされたタスクの使用手順
    bean

    class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >

    プロパティ

    name="トリガー">

    リスト
  1. >

    参照

  2. bean=
  3. "cronTrigger"

    リスト>

    プロパティ
  4. >
  5. bean
  6. >
  7. 説明: このパラメータは、以前に構成されたトリガーの名前を指定します。

  8. ステップ 5: アプリケーションを起動し、プロジェクトを Tomcat または他のコンテナーにデプロイするだけです。

    2 番目に、ジョブ クラスは特定の基本クラスを継承しません。

  9. Spring は 2 つのクラスのおかげでこのメソッドをサポートできます:
org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean

org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean

これら 2 つのクラスは、Spring でサポートされる 2 つのタイプにそれぞれ対応します。タスクのスケジューリングを実装するには、前述したように Java に付属するタイマー タスク メソッドと Quartz メソッドを使用します。ここでは、MethodInvokingJobDetailFactoryBean の使用法についてのみ書きます。このクラスを使用する利点は、タスク クラスがクラスから継承する必要がなく、通常の pojo であることです。

ステップ 1: タスク クラスを作成する

Java コード

public

class Job2 {

public Spring スケジュールされたタスクの使用手順void () {
  1. システム.out.println("QuartzJobBean モードを継承しません - スケジューリング中です...");

  2. }

    }

  3. これは通常のクラスであることがわかります。方法があります。

    ステップ 2: ジョブ クラスを構成する
  4. Xml コード
    1. beanid="job2"

    2. class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&g t; ​​

    3. プロパティ name="targetObject">

    4. bean class="com.gy.Job2" />

    5. property>

    6. property name="concurrent" value="false" /& gt;

    7. bean>次の手順は方法 1 と同じです。完全を期すために、それらの手順も掲載します。 ステップ 3: ジョブ スケジューリングのトリガー方法 (トリガー) を構成する Quartz には、org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling という 2 つのジョブ トリガーがあります。

      最初の SimpleTriggerBean は、30 分ごとに実行するなど、特定の頻度でのタスクの呼び出しのみをサポートします。
    8. 設定方法は以下の通りです:

      Xmlコード

bean id=

"simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerビーン」

> ;

プロパティ Spring スケジュールされたタスクの使用手順name=
"jobDetail"
ref=
    "job2"
  1. property name ="startDelay" value=

    "0"
  2. />
  3. property name="repeatInterval" value="2000" />

  4. bean> 2 番目の CronTriggerBean は、毎日 12:00 など、指定された時間に 1 回実行することをサポートします。 設定方法は以下の通りです:

  5. Xmlコード
    1. beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> プロパティ name="jobDetail" ref=

      "job2"
    2. > < ;

      プロパティ
    3. name=
    4. "cronExpression"

      value="0 0 12 * * ? />

    5. 上記の2つのスケジュール方法は、実際の状況に応じて選択できます。

      ステップ 4: スケジューリングファクトリーを構成する

      Xml コード

    bean

    class=
    "org.springframework.scheduling.quartz.SchedulerFactoryBean"
    >
    Spring スケジュールされたタスクの使用手順
    1. プロパティname="トリガー">

    2. リスト>

      参照
    3. bean=

      "cronTrigger"

    4. リスト> プロパティ>

    5. bean
    6. >

      説明: このパラメータは、以前に構成されたトリガーの名前を指定します。
    7. ステップ 5: アプリケーションを起動し、プロジェクトを Tomcat または他のコンテナーにデプロイするだけです。 この時点で、Spring の Quartz の基本構成が導入されました。もちろん、使用する前に、対応する Spring パッケージと Quartz パッケージをインポートする必要があります。

      実際のところ、Quartz の構成は非常に複雑であることがわかります。Quartz は実際には重量級のツールなので、単純にスケジュールされたいくつかの単純なタスクを実行したい場合は、もっと単純なツールはありますか? !
    8. 以下の Spring タスクの紹介をご覧ください。

      Spring-Task 前のセクションでは、Spring での Quartz の使用法を紹介しました。この記事では、Spring 3.0 以降の自社開発のスケジュールされたタスク ツールである Spring タスクを紹介します。これは、軽量の Quartz と比較することができ、使いやすいです。非常に簡単です。Spring 関連のパッケージを除いて追加のパッケージは必要ありません。これらの 2 つの方法を以下に紹介します。

      最初の方法: 設定ファイルメソッド
    最初のステップ: ジョブクラス

    、つまり通常のpojoを以下のように書きます:

    Javaコード

    1. import org.springframework.stereotype.Service;

    2. @Service

    3. public void job1() {

    4. System.out.println("タスクインprogress...");
    5. }

      }
    6. ステップ 2: Spring 構成ファイルのヘッダーに名前を追加する スペースと説明

    x mlns :タスク=

    「http://www.springframework.org/schema/task」

    ​​
    . 。 。 。 。 。 Spring スケジュールされたタスクの使用手順
    1. xsi:schemaLocation=

      "http://www.springframework.org/schema/task ">

    2. ステップ 3: Spring 構成ファイルに特定のタスクを設定する
    3. タスク:スケジュール

      ref=
    4. "taskJob"
    5. method=

      " job1"

      cron=
    6. "0 * * * * ?"
    7. />

      タスク:スケジュールされたタスク

      >

    Spring スケジュールされたタスクの使用手順
    context:component-scan
      base-package=
    1. "

      />

    2. 説明: ref パラメータ 指定されたタスククラス、指定されたメソッドは実行する必要があるメソッド、 cron および cronExpression 式 詳細については、ここでは紹介しません。前回の記事の付録。 言うまでもなく、この構成はスプリング スキャンのアノテーションに使用されます。 これで設定は完了です。とても簡単ですね。 2 番目: アノテーション フォームを使用する タスク クラスを作成するたびに XML ファイルで設定する必要はないかもしれません。 @Scheduled アノテーションの定義を見てみましょう。ソースファイル: Java コード

      1. @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})

      2. @Retention(RetentionPolicy.RUNTIME)

      3. @Document編

      4. public @interface Scheduled

      5. {

      6. public abstract String cron();

      7. public

        abstract
      8. long fixedDelay() ;
      9. このアノテーションには 3 つのメソッドまたはパラメータがあり、それぞれ表されていることがわかります。 意味:

        cron: cron 式を指定します。
      10. fixedDelay: 公式ドキュメントの説明: 間隔は前のタスクの完了時間から測定され、時間単位の値はミリ秒単位で測定されます。つまり、前のタスクの完了から次のタスクまでの間隔です。次のタスクの開始 (ミリ秒単位)。

        fixedRate: 公式ドキュメントの説明: 間隔ベースのトリガーで、時間単位の値は前のタスクの開始時刻から測定されます。つまり、前のタスクの開始から次のタスクまでの間隔です。次のタスクの開始。単位はミリ秒です。 次に設定してみましょう。

      11. ステップ 1: pojo を書く
      Java コード

    import org.springframework.scheduling.annotation.Scheduled

    im port org.springframe作業.ステレオタイプ.コンポーネント

    Spring スケジュールされたタスクの使用手順
    @Component("taskJob")
    1. public
    2. class TaskJob {
    3. Scheduled(cron =
    4. "0 0 3 * * ?")

    5. public

      void job1() {
    6. System.out.println("タスク進行中...") }

    7. }

      ステップ2: タスク関連の構成を追加します:
    8. Xml コード

      1. xml version="1.0" encoding="UTF-8"?>  

      2. beans xmlns="http://www.springframework.org/schema/beans"

      3. xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

      4. xmlns:context= "http://www.springframework.org/schema/context"

      5. xmlns:tx="http://www.springframework.org/schema/tx"

      6. xmlns:task="http://www.springframework.org/schema/task"

      7. xsi:schemaLocation="

      8. "

      9. default-lazy-init="false">  

      10. context:annotation-config />  

      11. >  

      12. context:component-scan base-package="com.gy.mytask" />  

      13. >  

      14. タスク:アノテーション駆動型 scheduler="qbScheduler" mode="proxy"/>  

      15. task:scheduler id="qbScheduler" pool-size="10"/>  

    注: 理論的には、構成文 を追加するだけで済みます。これらのパラメーターは必要ありません。

    もちろん、Spring タスクにはまだ多くのパラメータがあります。詳細については、xsd ドキュメントを参照してください。

    付録:

    cronExpression の設定手順、具体的な使用法およびパラメータについては、Baidu google

    フィールド 許可される値 許可される特殊文字

    秒 0-59 , - * /

    0 9 , - * /

    時間 0-23 , - * /

    日付 1-31 , - * ? / L W C

    月 1-12 または 1 月-12 月 , - * /

    平日 1 ~ 7 または SUN ~ SAT 、 - * ? / L C #

    年 (オプション) 空白のまま、1970 ~ 2099 、 - * /

    - 範囲

    * ワイルドカード

    ?そのフィールドを設定する必要はありません

    以下にいくつかの例を示します

    CRON 式 意味

    「0 0 12 * * ?」 毎日正午にトリガーされます

    「0 15 10 ? * *」 毎朝 10:15 にトリガーされます

    「0 15 10 * * ? 毎朝 10:15 にトリガーされます

    」 「0 15 10 * * ? *」 毎朝 10 : 15 トリガー

    "0 15 10 * * ? 2005" 2005 年の毎朝 10:15 にトリガー

    "0 * 14 * * ?" 午後 2 時から午後 2 時 59 分まで毎分トリガー

    "0 0/5 14 * * ?" 毎日午後 2 時から午後 2:55 まで 5 分ごとにトリガー

    "0 0/5 14,18 *** ?"午後2時〜2時55分と午後6時〜6時55分の2つの時間帯で

    「0 0-5 14 * * ?」 毎日14:00〜14:05の毎分 1つのトリガー

    「0 10,44 14 ? 3 WED」3月の毎週水曜日14:10と14:44にトリガー

    「0 15 10 ? * MON-FRI」毎週月曜日、火曜日、水曜日の10:15にトリガー、木曜と金曜

以上がSpring スケジュールされたタスクの使用手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません