Spring 3 + Quartz 1.8.6スケジューラーの例
Updated on 25 July 2012 – Spring3およびQuartz1.8.6を使用するように記事をアップグレードします(Spring2.5.6およびQuartz1.6でした)
このチュートリアルでは、SpringをQuartzスケジューラフレームワークと統合する方法を示します。 Springには、Quartzをサポートし、クラスをQuartz APIに分離するための多くの便利なクラスが付属しています。
使用ツール:
-
Spring 3.1.2.RELEASE
-
クォーツ1.8.6
-
Eclipse 4.2
-
メーベン3
Why NOT Quartz 2?
現在、Spring3はQuartz2 APIをまだサポートしていません。このSPR-8581 bug reportを参照してください。 修正されたバグがリリースされたら、この記事を再度更新します。
1. プロジェクトの依存関係
Spring 3とQuartz 1.8.6を統合するには、次の依存関係が必要です
ファイル:pom.xml
...... org.springframework spring-core 3.1.2.RELEASE org.springframework spring-context-support 3.1.2.RELEASE org.springframework spring-tx 3.1.2.RELEASE org.quartz-scheduler quartz 1.8.6
2. スケジューラータスク
通常のJavaクラスを作成します。これは、Quartzでスケジュールするクラスです。
ファイル:RunMeTask.java
package com.example.common; public class RunMeTask { public void printMe() { System.out.println("Spring 3 + Quartz 1.8.6 ~"); } }
3. Quartzスケジューラジョブの宣言
Springでは、次の2つの方法でQuartzジョブを宣言できます。
3.1 MethodInvokingJobDetailFactoryBean
これは最も単純で単純な方法であり、単純なスケジューラーに適しています。
3.2 JobDetailBeanQuartzJobBean
はより柔軟性があり、複雑なスケジューラーに適しています。 SpringのQuartzJobBean
を拡張するクラスを作成し、executeInternal()
メソッドでスケジュールするメソッドを定義し、setterメソッドを介してスケジューラタスク(RunMeTask)を渡す必要があります。
ファイル:RunMeJob.java
package com.example.common; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class RunMeJob extends QuartzJobBean { private RunMeTask runMeTask; public void setRunMeTask(RunMeTask runMeTask) { this.runMeTask = runMeTask; } protected void executeInternal(JobExecutionContext context) throws JobExecutionException { runMeTask.printMe(); } }
jobClass
を介してターゲットクラスを構成し、jobDataAsMap
を介して実行するようにメソッドを構成します。
4. 引き金
Quartzトリガーを設定して、スケジューラジョブをいつ実行するかを定義します。 次の2種類のトリガーがサポートされています。
4.1 SimpleTrigger
ジョブを実行するための開始時間、終了時間、繰り返し間隔を設定できます。
4.2 CronTrigger
Unix cron式で、ジョブを実行する日時を指定できます。
Note
Unix cron式は非常に柔軟で強力です。詳細については、次のWebサイトを参照してください。
7. Demo
実行してください〜
package com.example.common; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) throws Exception { new ClassPathXmlApplicationContext("Spring-Quartz.xml"); } }
コンソールへの出力。
Jul 25, 2012 3:23:09 PM org.springframework.scheduling.quartz.SchedulerFactoryBean startScheduler INFO: Starting Quartz Scheduler now Spring 3 + Quartz 1.8.6 ~ //run every 5 seconds Spring 3 + Quartz 1.8.6 ~
ソースコードをダウンロード
ダウンロード–Spring3-Quartz-Example.zip(25 KB)