一、背景
最後の時間は、私たちは、春のタスクがスケジュールされたタスクを完了するために書かれたことが、我々は春が再び定期的なタスクの開発を達成するための石英方法を統合するために使用し、この時間を使って、以下の開発手順と注意事項を提供する方法について説明します。
第二に、開発環境とjarパッケージに依存しなければなりません
1.開発環境
- 春4.2.6.RELEASE
- Mavenの3.3.9
- JDK 1.7
- イデア15.04
2.基本的な瓶のパッケージの依存関係
< 依存性> < のgroupId > org.springframework </ のgroupId > < たartifactId >ばねコンテキストサポート</ たartifactId > < バージョン> 4.2.6.RELEASE </ バージョン> </ 依存> < 依存性> < のgroupId > org.quartz -Scheduler </ groupIdを> < たartifactId >クォーツ</ たartifactId > <バージョン>2.2.1 </ バージョン> </ 依存関係>
第三に、開発ステップ
[1]。特定の基本クラスに基づいて
QuartzJobBeanから継承する必要があります。1.準備タスククラス
Com.hafiz.www.cron 1つのパッケージ。 2 3輸入org.quartz.JobExecutionContext。 4インポートorg.quartz.JobExecutionException。 5インポートorg.slf4j.Logger。 6インポートorg.slf4j.LoggerFactory。 7インポートorg.springframework.scheduling.quartz.QuartzJobBean。 8 9 / ** 10 * DESC:タスクスプリングクォーツに基づいて第2のタイミング 2016年12月11日にhafiz.zhangによって作成された11 *。 12 * / 13のパブリッククラスSecondCronはQuartzJobBeanを{延び 14プライベート静的最終ロガーロガー= LoggerFactory.getLogger(SecondCron.class)。 15プライベート整数のタイムアウト。 16 タイムアウト時間は、開始後17 //インスタンス化プラントのスケジュールの後、スケジューリングが行われます 18公共のボイドのsetTimeout(整数タイムアウト){ 19 this.timeout =タイムアウト。 20} 21 22 @Override 23保護されたボイドexecuteInternal(JobExecutionContext jobExecutionContext)はJobExecutionExceptionを{スロー 24 logger.info( "タイマータスク2 ......."); 25 //は、何かを行います 26} 27}
春の設定ファイルにJobDetailFactoryBeanジョブ・クラスの設定、ジョブスケジューリングトリガー(トリガー)、スケジューリング機能
1 <豆のxmlns = "http://www.springframework.org/schema/beans" 2つのxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" 3つのxmlns:タスク= "http://www.springframework.org/schema/task" 4 XSI:のschemaLocation = "http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 6 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd "> 7 8 <Bean名= "secondCron" クラス= "org.springframework.scheduling.quartz.JobDetailFactoryBean"> 9 <プロパティ名= "JOBCLASS" 値= "com.hafiz.www.cron.SecondCron" /> 10 <プロパティ名= "jobDataAsMap"> 11 <マップ> 12 <エントリキー= "タイムアウト" 値= "0" /> 13 </地図> 14 </プロパティ> 15 </豆> 16 17 <! - 特定の周波数に応じてトリガ - > 18 <! - <豆ID = "simpleTrigger" クラス= "org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 19 <プロパティ名= "jobDetail" REF = "secondCron" /> 20 <プロパティ名= "startDelay" 値= "0" /> 21 <プロパティ名= "repeatInterval" 値= "2000" /> 22 </ビーン> - > 23 24 <! - クーロン式がトリガ - > 25 <ビーンID = "cronTrigger" クラス= "org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 26 <プロパティ名= "jobDetail" REF = "secondCron" /> 27 <プロパティ名= "cronExpression" 値= "0/5 * * * *?" /> 28 </豆> 29 30 <! - スケジューリングプラントを設定 - > 31 <Beanクラス= "org.springframework.scheduling.quartz.SchedulerFactoryBean"> 32 <プロパティ名= "トリガー"> 33 <リスト> 34 <! - <refの豆= "simpleTrigger" /> - > 35 <REF豆= "cronTrigger" /> 36 </リスト> 37 </プロパティ> 38 </豆> 39 </豆>
注意:
1).org.springframework.scheduling.quartz.JobDetailBeanには2つの属性があります。
私たちは、Javaコードで定義されたタスクであるJOBCLASSクラスプロパティ。
クラスのタスクが注入される、すなわちプロパティ値を属性jobDataAsMap。
2).Quartzジョブがトリガー2つ(二種類任意に1本のライン)
org.springframework.scheduling.quartz.SimpleTriggerFactoryBean:のみ、そのような時間を実行している30分ごととして呼び出しタスクの特定の周波数に応じてサポートしています。
org.springframework.scheduling.quartz.CronTriggerFactoryBean:なように12時00分に一度実行日として、特定の期間を実行するためのサポート。
:第2のトリガ用のCron式は、別のブログを参照cronジョブ@Scheduledのcron表現を取り除く悩まさ春
3)名前.org.springframework.scheduling.quartz.SchedulerFactoryBeanパラメータは、トリガは、以前に構成されたトリガを指定します。
3.ファイル名を指定して実行結果
[2]。特定の基本クラスに基づいていません
1.準備タスクスケジューリングクラス
com.hafiz.www.cronパッケージ。 輸入org.slf4j.Logger。 輸入org.slf4j.LoggerFactory; / ** *内容:春クォーツの統合に基づいて行われたタスクの完了のタイミング * 2016年12月11日にhafiz.zhangによって作成されます。 * / パブリッククラスThirdCron { プライベート静的最終ロガーロガー= LoggerFactory.getLogger(ThirdCron.class)。 公共ボイドexecuteJob(){ logger.info(」タイマータスク3" で.......); //何かを行います } }
春プロファイルでMethodInvokingJobDetailFactoryBeanジョブの種類、ジョブスケジューリングトリガー(引き金)を設定、スケジューリング機能
1 <豆のxmlns = "http://www.springframework.org/schema/beans" 2つのxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" 3 XSI:のschemaLocation = "http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd "> 5 6 <Bean名= "thirdCron" クラス= "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 7 <プロパティ名= "対象物体"> 8 <Beanクラス= "com.hafiz.www.cron.ThirdCron" /> 9 </プロパティ> 10 <プロパティ名= "targetMethod" 値= "executeJob" /> 11 <! - 関連付けられたジョブスケジューリングなし - > 12 <プロパティ名= "同時" 値= "偽" /> 13 </豆> 14 15 <! - 特定の周波数に応じてトリガ - > 16 <! - <豆ID = "simpleTrigger" クラス= "org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> 17 <プロパティ名= "jobDetail" REF = "thirdCron" /> 18 <プロパティ名= "startDelay" 値= "0" /> 19 <プロパティ名= "repeatInterval" 値= "2000" /> 20 </ビーン> - > 21 22 <! - クーロン式がトリガ - > 23 <ビーンID = "cronTrigger" クラス= "org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 24 <プロパティ名= "jobDetail" REF = "thirdCron" /> 25 <プロパティ名= "cronExpression" 値= "0/5 * * * *?" /> 26 </豆> 27 28 <! - スケジューリングプラントを設定 - > 29 <beanクラス= "org.springframework.scheduling.quartz.SchedulerFactoryBean"> 30 <プロパティ名= "トリガー"> 31 <リスト> 32 <! - <refの豆= "simpleTrigger" /> - > 33 <REF豆= "cronTrigger" /> 34 </リスト> 35 </プロパティ> 36 </豆> 37 </豆>
注:MethodInvokingJobDetailFactoryBean、二つの重要な属性があります。
対象物体は、タスククラスを指定しました。
targetMethodは、操作方法を指定しました。
3.ファイル名を指定して実行結果