Maison >Java >javaDidacticiel >Instructions d'utilisation pour les tâches planifiées Spring
L'utilitaire Java de Java. Classe .Timer, cette classe vous permet de planifier une tâche java.util.TimerTask. L'utilisation de cette méthode permet à votre programme d'être exécuté à une certaine fréquence, mais pas à une heure spécifiée.
Utilisez Quartz, qui est un planificateur relativement puissant qui permet d'exécuter votre programme à une heure spécifiée ou à une certaine fréquence. La configuration est un peu compliquée.
Les tâches fournies avec Spring 3.0 et versions ultérieures peuvent être considérées comme un Quartz léger, et elles sont beaucoup plus simples à utiliser que Quartz.
Étape 1 : Définir la classe d'emploi
importer org.quartz.JobExecutionContext; >
importer org.springframework.scheduling.quartz.QuartzJobBean; >délai d'expiration int
privé statique int i = 0;
public
this.timeout = timeout;
}
/**
@Override
protected
}
Étape 2 : Configurer la classe de travail JobDetailBean dans le fichier de configuration Spring
bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean">
propriété name= "jobClass" value="com.gy.Job1" />
propriété name= "jobDataAsMap">
carte>
entry key="timeout" value=" 0" />
carte>
propriété>
haricot>
说明:org.springframework.scheduling.quartz.JobDetailBean有两个属性,jobClass属性即我们在java代码中定义的
第三步:配置作业调度的触发方式(触发器)
Quartz的第一种Si mpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
Xml代码
Xml代码
bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
propriété nom= "jobDetail" ref="job1" />
>
propriété name="cronExpression" value="0 0 12 * * ?" bean> 🎜> Voir l'annexe pour la syntaxe de l'expression cronExpression.
Code XML
"org.springframework.scheduling.quartz.SchedulerFactoryBean"> >
list> >ref bean="cronTrigger" /> >list
>Description : Ce paramètre spécifie le nom du déclencheur précédemment configuré. Étape 5 : Démarrez simplement votre application, c'est-à-dire déployez le projet sur Tomcat ou d'autres conteneurs.
Deuxièmement, la classe d'emplois n'hérite pas d'une classe de base spécifique.org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBeanorg.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBeanCes deux classes correspondent respectivement aux deux méthodes de planification de tâches supportées par spring, à savoir la méthode des tâches timer et la méthode Quartz fournies avec Java comme mentionné ci-dessus. Ici, j'écris uniquement sur l'utilisation de MethodInvokingJobDetailFactoryBean. L'avantage de l'utilisation de cette classe est que notre classe de tâches n'a plus besoin d'hériter d'une classe, mais est un pojo ordinaire.
Code Java public
class Job2 {public void doJob2() {
System.out.println("N'hérite pas de la méthode QuartzJobBean - planification en cours...");
}} Comme vous pouvez le voir, il s'agit d'une classe ordinaire et a une méthode.
Code XML
bean id="job2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
property name="targetObject">
bean class="com.gy.Job2 " />
propriété>
property name="targetMethod" value=" doJob2" />
propriété name= "concurrent" value="false" />
haricot> ;
说明:一步是关键步骤,声明一个MethodInvokingJobDetailFactoryBean,有两个关键属Nom : targetObject指定任务类,targetMethod指定运行的方法。往下的步骤就与方法一相同了,为了完整,同样贴出。
第三步:配置作业调度的触发方式(触发器)
Quartz的作业触发器有两种,分别是
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
第一种SimpleTriggerBean,只支持按照一定频度调用任务,如每隔30分钟运行一次。
配置方式如下:
bean id="simpleTrigger" class="org.springframework.scheduling.quartz .SimpleTriggerBean">
propriété name= "jobDetail" ref="job2" />
propriété name= "startDelay" value="0" />
propriété nom= "repeatInterval" value="2000" />
haricot> ;
第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
配置方式如下:
bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
propriété nom= "jobDetail" ref="job2" />
>
propriété name="cronExpression" value="0 0 12 * * ?" bean> 🎜>Vous pouvez choisir l'une des deux méthodes de planification ci-dessus en fonction de la situation réelle.
Code XML
"org.springframework.scheduling.quartz.SchedulerFactoryBean"> >
list> >ref bean="cronTrigger" /> >list
>Explication : Ce paramètre spécifie le nom du déclencheur précédemment configuré. Étape 5 : Démarrez simplement votre application, c'est-à-dire déployez le projet sur Tomcat ou d'autres conteneurs. À ce stade, la configuration de base de Quartz au printemps a été introduite. Bien sûr, avant de l'utiliser, vous devez y importer le package spring correspondant. il n'y a pas besoin de plus.
En fait, on voit que la configuration de Quartz semble assez compliquée. Il n'y a aucun moyen, car Quartz est en fait un outil lourd. Si l'on veut simplement exécuter quelques tâches planifiées simples, y en a-t-il. quelque chose de plus simple ? Des outils, oui !Spring-TaskLa section précédente a présenté l'utilisation de Quartz au Spring. Cet article présente l'outil de tâches planifiées auto-développé après Spring 3.0, spring task, qui. peut être C'est comme un Quartz léger, et il est très simple à utiliser. Il ne nécessite pas de packages supplémentaires à l'exception des packages liés à Spring, et il prend en charge deux formes d'annotations et de fichiers de configuration. Ces deux seront présentés ci-dessous.
La première : méthode du fichier de configurationLa première étape : écrire la classe de travail qui est un pojo ordinaire, comme suit : Code Java
import org.springframework.stereotype.Service;
public
void job1() {}
. . . . . . xsi:schemaLocation="http://www.springframework.org/schema/task "
> >Étape 3 : Définir des tâches spécifiques dans le fichier de configuration Spring
Code XML
tâche : tâches planifiées>
tâche : planifiée
tâche : tâches planifiées> >context:component-scan base-package=" com.gy.mytask " />
Explication : Le paramètre ref spécifie la classe de tâches, la méthode spécifie la méthode qui doit être exécuté, expressions cron et cronExpression, la méthode d'écriture spécifique n'est pas présentée ici, détails Voir l'annexe de l'article précédent.La configuration est complète ici, n'est-ce pas très simple ? Deuxièmement : utiliser le formulaire d'annotation Peut-être que nous ne voulons pas le configurer dans le fichier XML à chaque fois que nous écrivons une classe de tâches. Nous pouvons utiliser l'annotation @Scheduled. au fichier source. Définition de l'annotation :
@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documenté
public @interface Planifié
{
public abstract String cron() ;
public résumé long fixDelay();
public résumé long fixRate(); 🎜>
}Première étape : écrire du pojo
Code Java
class TaskJob {
@Scheduled(cron =
public
System.out.println("Tâche en cours. . ”);
Étape 2 : Ajouter la configuration liée à la tâche :
Code XMLxml version="1.0" encoding="UTF-8"?>
haricots xmlns= "http://www.springframework.org/schema/beans"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation ="
"
default-lazy-init="faux">
context:annotation-config />
>
context:component-scan base-package="com.gy.mytask" /> ;
>
task:annotation-driven scheduler="qbScheduler" mode="proxy" />
tâche:planificateur id="qbScheduler" pool-size="10"/>
Remarque : Théoriquement, il vous suffit d'ajouter la phrase de configuration
Ok, la configuration est terminée. Bien sûr, la tâche Spring a encore de nombreux paramètres, je ne les expliquerai pas un par un. Veuillez vous référer au document xsd pour plus de détails.
Annexe :
instructions de configuration de cronExpression, pour une utilisation et des paramètres spécifiques, veuillez Baidu google
champ autorisé valeurs Caractères spéciaux autorisés
secondes 0-59 , - * /
minutes 0-59 , - * /
Heure 0-23, - * /
Date 1-31, - * / L W C
Mois 1 -12 ou JAN-DEC , - * /
Semaine 1-7 ou SUN-SAT , - * ? / L C #
Année (Facultatif) Laisser vide, 1970-2099, - * /
- Intervalle
* Wildcard
? Vous ne souhaitez pas définir ce champ
Ce qui suit ne sont que quelques exemples
Expression CRON Formule Signification
"0 0 12 * * ?" Déclenché tous les jours à 12h
"0 15 10 ? * *" Chaque matin Déclenché à 10h15
"0 15 10 * * ?" Déclenché à 10h15 chaque matin
"0 15 10 * * ? * " Déclenché tous les matins à 10h15
"0 15 10 * * ? Déclenché tous les matins à 10h15 en 2005
"0*14* *?" Déclenché toutes les minutes de 14h00 à 14h59 tous les jours
"0 0/5 14* * ?" à partir de 14h Déclenché toutes les 5 minutes jusqu'à fin 14h55
"0 0/5 14,18* *?" à 18h00 Déclenché toutes les 5 minutes en deux périodes de 55
"0 0-5 14 * * ?" Déclenché une fois par minute de 14h00 à 14h05 tous les jours
"0 10,44 14 ? 3 MER" Déclenché tous les mercredis à 14h10 et 14h44 en mars
"0 15 10 ? *MON-FRI" se déclenche tous les lundis, mardis, mercredis, jeudis et vendredis à 10h15
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!