1.分類
実装テクノロジーの観点から見ると、現在 3 つの主要なテクノロジーがあります:
Java 独自の java.util.Timer クラス。このクラスを使用すると、java.util.TimerTask タスクをスケジュールできます。この方法を使用すると、指定した時間ではなく、特定の頻度でプログラムを実行できます。
Quartz を使用します。Quartz は、指定した時間または頻度でプログラムを実行できるようにする比較的強力なスケジューラーです。設定は少し複雑です。
Spring 3.0 以降に付属するタスクは軽量の Quartz とみなすことができ、Quartz よりもはるかに簡単に使用できます。
ジョブクラスの継承方法に関しては、次の 2 つのカテゴリに分類できます:
ジョブ クラスは、Quartz などの特定のジョブ クラスの基本クラスから継承する必要があり、継承する必要があります。 org.springframework.scheduling .quartz.QuartzJobBean から; java.util.Timer は java.util.TimerTask から継承する必要があります。
ジョブ クラスは通常の Java クラスであり、基本クラスから継承する必要はありません。
注: すべてのクラスは共通クラスであり、事前に特別に処理する必要がないため、個人的には 2 番目の方法を使用することをお勧めします。
タスクスケジューリングのトリガータイミングから、ジョブに使用されるトリガーは主に以下の2種類があります:
指定時間ごとにトリガー、Quartzで対応 トリガーは: org .springframework.scheduling.quartz.SimpleTriggerBean
は、指定された時間ごとに 1 回トリガーされます。 Quartz の対応するスケジューラーは次のとおりです。 org.springframework.scheduling.quartz.CronTriggerBean
注: 各タスクがこれら 2 つのトリガーを使用できるわけではありません。たとえば、java.util.TimerTask タスクは最初のタスクのみを使用できます。 Quartz と Spring タスクは両方とも、これら 2 つのトリガー条件をサポートできます。
2.使用方法
QuartzやSpringタスクなど、各タスクスケジューリングツールの使い方を詳しく紹介します。
Quartz
最初のタイプのジョブ クラスは、特定の基本クラス org.springframework.scheduling.quartz.QuartzJobBean を継承します。
ステップ 1: ジョブ クラスを定義する
import org.quartz.JobExecutionContext
import またはg.quartz.JobExecutionException
-
import org.springframework.scheduling.quartz.QuartzJobBean;
public class Job1 extends QuartzJobBean {
private - int timeout;
-
プライベート静的int i =
-
//スケジューリングファクトリーがインスタンス化された後、タイムアウト時間後にスケジューリングが開始されます
public void setTimeout( - int timeout) {
this.timeout = タイムアウト }
* スケジュールされる特定のタスク
*/
-
@オーバーライド
-
protected
voidexecuteInternal (JobExecutionContext コンテキスト) -
この行 JobExecutionException {
System.out.println("スケジュールされたタスクが実行中です...")
- }
- ステップ 2: Spring 構成ファイルでジョブ クラス JobDetailBean
-
beanname="job1"class="org.springframework.scheduling.quartz.JobDetailBean"> プロパティ
name=- "jobClass"
value="com.gy.Job1" /> property
name= - "jobDataAsMap"
&g マップ
> entry
key=- "timeout"
value="0" /& gt;
地図 > -
プロパティ
> 説明: org.springframework.scheduling.quartz.JobDetailBean には 2 つの属性があります。jobClass 属性は Java コードで定義するタスク クラスであり、jobDataAsMap 属性はタスク クラスに注入する必要がある属性値です。
- ステップ 3: ジョブ スケジューリングのトリガー方法 (トリガー) を構成する
Quartz には、org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling という 2 つのジョブ トリガーがあります。
最初の SimpleTriggerBean は、30 分ごとに実行するなど、特定の頻度でのタスクの呼び出しのみをサポートします。
Xmlコード
bean id="simpleTrigger"
class="org.springframework.scheduling .quartz.SimpleTriggerBean"
>プロパティname="jobDetail" ref="job1"
< ;property name="startDelay" value="0" /> property
name=- "repeatInterval"
value="2000" /> bean>
-
2 番目の CronTriggerBean は、毎日 12:00 に 1 回実行するなど、指定した時間に 1 回実行することをサポートします。 設定方法は以下の通りです: Xmlコード
beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean">
プロパティ name="jobDetail" ref="job1"
> - < ;
プロパティname="cronExpression" value="0 0 12 * * ? />
豆
cronExpression 式の構文については、付録を参照してください。
ステップ 4: スケジューリングファクトリーを構成する
Xml コード
- bean
- >
参照
bean= - "cronTrigger"
リスト>
プロパティ > -
説明: このパラメータは、以前に構成されたトリガーの名前を指定します。
- ステップ 5: アプリケーションを起動し、プロジェクトを Tomcat または他のコンテナーにデプロイするだけです。
2 番目に、ジョブ クラスは特定の基本クラスを継承しません。
Spring は 2 つのクラスのおかげでこのメソッドをサポートできます:
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" >
プロパティname="トリガー">
リストこれら 2 つのクラスは、Spring でサポートされる 2 つのタイプにそれぞれ対応します。タスクのスケジューリングを実装するには、前述したように Java に付属するタイマー タスク メソッドと Quartz メソッドを使用します。ここでは、MethodInvokingJobDetailFactoryBean の使用法についてのみ書きます。このクラスを使用する利点は、タスク クラスがクラスから継承する必要がなく、通常の pojo であることです。
ステップ 1: タスク クラスを作成する
Java コードpublic
class Job2 {
システム.out.println("QuartzJobBean モードを継承しません - スケジューリング中です...");
- }
}
-
これは通常のクラスであることがわかります。方法があります。
ステップ 2: ジョブ クラスを構成する - Xml コード
-
beanid="job2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&g t;
プロパティ name="targetObject">
-
bean class="com.gy.Job2" />
property>
property name="concurrent" value="false" /& gt;
-
bean>次の手順は方法 1 と同じです。完全を期すために、それらの手順も掲載します。 ステップ 3: ジョブ スケジューリングのトリガー方法 (トリガー) を構成する Quartz には、org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling という 2 つのジョブ トリガーがあります。
最初の SimpleTriggerBean は、30 分ごとに実行するなど、特定の頻度でのタスクの呼び出しのみをサポートします。 - 設定方法は以下の通りです:
Xmlコード
"simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerビーン」
> ;- "job2"
-
property name ="startDelay" value=
"0" /> -
property name="repeatInterval" value="2000" />
bean> 2 番目の CronTriggerBean は、毎日 12:00 など、指定された時間に 1 回実行することをサポートします。 設定方法は以下の通りです:
Xmlコード-
beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> プロパティ name="jobDetail" ref=
"job2" -
> < ;
プロパティ name= - "cronExpression"
value="0 0 12 * * ? />
豆
- 上記の2つのスケジュール方法は、実際の状況に応じて選択できます。
ステップ 4: スケジューリングファクトリーを構成する
Xml コード
bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"最初のステップ: ジョブクラスプロパティname="トリガー">
-
リスト>
参照 - bean=
"cronTrigger"
リスト> プロパティ>
bean- >
説明: このパラメータは、以前に構成されたトリガーの名前を指定します。
-
ステップ 5: アプリケーションを起動し、プロジェクトを Tomcat または他のコンテナーにデプロイするだけです。 この時点で、Spring の Quartz の基本構成が導入されました。もちろん、使用する前に、対応する Spring パッケージと Quartz パッケージをインポートする必要があります。
実際のところ、Quartz の構成は非常に複雑であることがわかります。Quartz は実際には重量級のツールなので、単純にスケジュールされたいくつかの単純なタスクを実行したい場合は、もっと単純なツールはありますか? ! - 以下の Spring タスクの紹介をご覧ください。
Spring-Task 前のセクションでは、Spring での Quartz の使用法を紹介しました。この記事では、Spring 3.0 以降の自社開発のスケジュールされたタスク ツールである Spring タスクを紹介します。これは、軽量の Quartz と比較することができ、使いやすいです。非常に簡単です。Spring 関連のパッケージを除いて追加のパッケージは必要ありません。これらの 2 つの方法を以下に紹介します。
最初の方法: 設定ファイルメソッド
、つまり通常のpojoを以下のように書きます:
Javaコード
import org.springframework.stereotype.Service;
@Service
public void job1() {
-
-
}
} - ステップ 2: Spring 構成ファイルのヘッダーに名前を追加する スペースと説明
「http://www.springframework.org/schema/task」
- xsi:schemaLocation=
"http://www.springframework.org/schema/task ">
ステップ 3: Spring 構成ファイルに特定のタスクを設定する -
タスク:スケジュール
ref= "taskJob" - method=
" job1"
cron= "0 * * * * ?" - />
タスク:スケジュールされたタスク
>
-
public
class TaskJob { - "0 0 3 * * ?")
-
public
void job1() { System.out.println("タスク進行中...") }
- }
-
Xml コード
xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context= "http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
"
default-lazy-init="false">
context:annotation-config />
>
context:component-scan base-package="com.gy.mytask" />
>
タスク:アノテーション駆動型 scheduler="qbScheduler" mode="proxy"/>
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 サイトの他の関連記事を参照してください。

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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