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 :
-
Spring 3.1.2.RELEASE
-
Quartz 1.8.6
-
Eclipse 4.2
-
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)