Exemple de programmateur Spring 3 Quartz 1.8.6

Exemple de planificateur Spring 3 + Quartz 1.8.6

Updated on 25 July 2012 - Mettre à niveau l'article pour utiliser Spring 3 et Quartz 1.8.6 (c'était Spring 2.5.6 et Quartz 1.6)

Dans ce tutoriel, nous allons vous montrer comment intégrer Spring avec le framework de planificateur Quartz. Spring est livré avec de nombreuses classes pratiques pour prendre en charge Quartz et découpler votre classe en API Quartz.

Les outils utilisés :

  1. Spring 3.1.2.RELEASE

  2. Quartz 1.8.6

  3. Eclipse 4.2

  4. Maven 3

Why NOT Quartz 2?
Actuellement, Spring 3 ne prend toujours PAS en charge les API Quartz 2, voir ceSPR-8581 bug report. Mettra à jour cet article à nouveau une fois le bogue corrigé.

1. Dépendance du projet

Vous avez besoin des dépendances suivantes pour intégrer Spring 3 et Quartz 1.8.6

Fichier: 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. Tâche du planificateur

Créez une classe Java normale, c'est la classe que vous souhaitez programmer dans Quartz.

Fichier: RunMeTask.java

package com.example.common;

public class RunMeTask {
    public void printMe() {
        System.out.println("Spring 3 + Quartz 1.8.6 ~");
    }
}

3. Déclarer le travail du planificateur Quartz

Avec Spring, vous pouvez déclarer un travail Quartz de deux manières:

3.1 MethodInvokingJobDetailFactoryBean
C'est la méthode la plus simple et la plus directe, adaptée à un planificateur simple.



    
    

3.2 JobDetailBean
LeQuartzJobBean est plus flexible et convient aux planificateurs complexes. Vous devez créer une classe pour étendre lesQuartzJobBean du Spring, définir la méthode que vous souhaitez planifier dans la méthodeexecuteInternal(), et passer la tâche du planificateur (RunMeTask) via la méthode setter.

Fichier: 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();

    }
}

Configurez la classe cible viajobClass et la méthode à exécuter viajobDataAsMap.



    

    
        
            
        
    

4. Déclencheur

Configurez le déclencheur Quartz pour définir quand exécutera votre travail de planificateur. Deux types de déclencheurs sont pris en charge:

4.1 SimpleTrigger
Il permet de définir l'heure de début, l'heure de fin, l'intervalle de répétition pour exécuter votre travail.

        
    

        
        
        

    

4.2 CronTrigger
Cela permet à l'expression cron Unix de spécifier les dates et heures d'exécution de votre travail.

    
    

        
        

    

Note
L'expression cron Unix est très flexible et puissante, en savoir plus sur les sites Web suivants:

5. Usine de planificateur

Créez un bean factory Scheduler pour intégrer à la fois les détails du travail et le déclencheur.

   
    
       
          
       
    

    
        
        
        
    
   

6. Fichier de configuration Spring Bean

Complétez le fichier de configuration du bean de Spring.

Fichier: Spring-Quartz.xml



    

    
    

        

        
          
            
          
        

    

    

    
    

        
        
        

    

    
    

        
        

    

    
        
            
                
            
        

        
            
                
            
        
    

7. Demo

Exécutez-le ~

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");
    }
}

Sortie vers la console.

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 ~

Télécharger le code source

Téléchargez-le -Spring3-Quartz-Example.zip (25 Ko)