Spring 3 + Quartz 1.8.6スケジューラの例

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に分離するための多くの便利なクラスが付属しています。

使用ツール:

  1. Spring 3.1.2.RELEASE

  2. クォーツ1.8.6

  3. Eclipse 4.2

  4. メーベン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 JobDetailBean
QuartzJobBeanはより柔軟性があり、複雑なスケジューラーに適しています。 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サイトを参照してください。

5. スケジューラー工場

スケジューラファクトリBeanを作成して、ジョブの詳細とトリガーの両方を統合します。

   
    
       
          
       
    

    
        
        
        
    
   

6. Spring Bean構成ファイル

SpringのBean設定ファイルを完成させます。

ファイル:Spring-Quartz.xml



    

    
    

        

        
          
            
          
        

    

    

    
    

        
        
        

    

    
    

        
        

    

    
        
            
                
            
        

        
            
                
            
        
    

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)