Maison  >  Article  >  Java  >  Tutoriel sur la configuration de Quartz dans le framework Spring de Java

Tutoriel sur la configuration de Quartz dans le framework Spring de Java

高洛峰
高洛峰original
2017-01-23 10:58:311489parcourir

Le processus de configuration de Quartz au printemps :

1. Importez le package JAR

Le package JAR requis par quartz est déjà inclus dans Spring, et son emplacement est quartz sous libquartz dans le le répertoire après spring est décompressé -all-1.6.1.jar,

copiez-le simplement dans le WEB-INF/lib du projet.


2. Configurez web.xml pour charger le fichier de configuration du quartz au démarrage du printemps

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- spring -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application-*.xml</param-value>
  </context-param>
  
  <!-- spring监听 -->
  
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
</web-app>

3. Écrivez le fichier de configuration du quartz : application-quartz.xml En fait, ceux-ci. configurations Il peut être écrit dans d'autres fichiers de configuration Spring

<?xml version="1.0" encoding="UTF-8"?>
  
<beans 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:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  
  <!-- 任务实体 -->
  <bean id="testTaskBean" class="com.jp.task.TestTask" />
  
  <!-- 定时更新政策任务方法 -->
  <bean id="testTaskTimerMethod"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="testTaskBean" />
    <!-- targetMethod 配置定时执行的方法名 -->
    <property name="targetMethod" value="executeAction" />
    <property name="concurrent" value="false" />
  </bean>
  
  <!-- 定时更新政策触发器 -->
  <bean id="testTaskTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="syncPolicyTaskTimerMethod" />
        <!-- 每个3分钟的第0秒执行 -->
    <property name="cronExpression" value="0 0/3 * * * ?" />
  </bean>
  
  <!-- 订制任务列表 -->
  <bean id="scheduler"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="testTaskTrigger" />
      </list>
    </property>
  </bean>
</beans>

4. Écrivez la classe JAVA TestTask pour exécuter la tâche

package com.jp.task;
   
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
  
  
public class TestTask extends QuartzJobBean{
    
  Logger log = Logger.getLogger( PolicyServiceTest.class );
      
  public void executeAction(){
    log.info("Hello quartz");
  }
  
  @Override
  protected void executeInternal(JobExecutionContext arg0)
      throws JobExecutionException {
      
  }
  
}

5. Tous les travaux sont prêts et prêts à démarrer. En gros, une erreur a été signalée. Il y a des erreurs comme NoSuchMethod.
Cela est dû au fait que la version commons-collections.jar est trop basse. Nécessite commons-collections-3.2.jar ou supérieur.

À l'heure actuelle, il y a commons-collections-3.2.jar dans le projet que vous recherchez. Que se passe-t-il ? Si vous effectuez une nouvelle recherche, vous trouverez commons-collections-2.1.1.jar en veille prolongée.

Supprimez simplement commons-collections-2.1.1.jar.


PS:cronExpression——Description de l'expression Cron

Secondes

Minutes

Heures

Date dans le mois

Mois

Date dans la semaine

Année (champ facultatif)

Caractères spéciaux

Le déclencheur Cron utilise une série de caractères spéciaux, comme suit Affiché :

Le caractère barre oblique inverse (/) représente une valeur incrémentielle. Par exemple, « 5/15 » dans le champ des secondes signifie toutes les 15 secondes à partir de la seconde 5.

Le caractère point d'interrogation (?) et le caractère lettre L ne sont disponibles que dans les champs jour du mois et jour de la semaine. Le point d'interrogation indique que ce champ ne contient pas de valeur spécifique. Ainsi, si vous spécifiez un jour dans le mois, vous pouvez insérer un « ? » dans le champ du jour de la semaine pour indiquer que la valeur du jour de la semaine n'a pas d'importance. Le caractère de la lettre L est l’abréviation de dernier. Mettez-le dans le champ date du mois pour planifier l'exécution le dernier jour du mois. Dans un champ de jour de la semaine, « L » est égal à « 7 » s'il est présent seul, sinon il représente la dernière instance d'un jour de la semaine dans le mois. Donc "0L" signifie qu'il est prévu qu'il soit exécuté le dernier dimanche du mois.

La lettre (W) dans un champ jour du mois planifie l'exécution le jour de la semaine le plus proche de la valeur spécifiée. Mettez "1W" dans le champ de date du mois pour planifier l'exécution le premier jour ouvrable du mois.

Le caractère dièse (#) spécifie une instance de jour ouvrable spécifique pour un mois donné. Mettez « MON#2 » dans le champ du jour de la semaine pour planifier la tâche le deuxième lundi du mois.

Le caractère astérisque (*) est un caractère générique, indiquant que le champ peut accepter n'importe quelle valeur possible.
Caractères spéciaux autorisés pour les valeurs autorisées des champs :
secondes 0-59, - * /
minutes 0-59, - * /
heures 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, - * /
Expression signifiant
"0 0 12 * * ?" Déclenché à 12h tous les jours "0 15 10 * * ?" 0 15 10 * * ? *" Déclenché tous les jours à 10h15
"0 15 10 * * ? 2005" Déclenché tous les jours à 10h en 2005 : 15 déclencheurs
"0 * 14 * * ?" se déclenche toutes les 1 minutes de 14h à 14h59 tous les jours
"0 0/5 14 * * ?" se déclenche toutes les 1 minutes de 14h à 14h59 tous les jours Déclenche toutes les 5 minutes pendant 2h55
"0 0/5 14,18 * * ?" Déclenche toutes les 5 minutes entre 14h et 14h55 et 18h à 18h55 tous les jours
"0 0-5 14 * * ?" minute de 14h à 14h05 tous les jours
"0 10,44 14 ? 3 MER" Tous les mercredis à 14h10 en mars et 14h44
"0 15 10 ? *MON-FRI" se déclenche à 10h15 du lundi au vendredi
"0 15 10 15* ?" se déclenche à 10h15 le 15 de chaque mois
"0 15 10 L* ?" dernier jour de chaque mois
"0 15 10 ? *6L" Déclenché à 10h15 le dernier vendredi de chaque mois
"0 15 10 ? *6L 2002-2005" Déclenché à 10h15 le le dernier vendredi de chaque mois de 2002 à 2005
"0 15 10 ? *6#3" Déclenché à 10h15 le troisième vendredi de chaque mois
Tous les matins à 6h

0 6 * * *

Toutes les deux heures

0 */2 * * *

Entre 23h et 8h. Toutes les deux heures, 8h

0 23 -7/2, 8 * * *

Le 4 de chaque mois et tous les lundis au mercredi matin 11h

0 11 4*1-3

1er 4 janvier am

0 4 1 1 *

Plus dans le framework Spring pour Java Pour des tutoriels sur la configuration de Quartz, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn