Maison >Java >javaDidacticiel >Exemple d'implémentation de Spring+quartz
Il y a un problème dans le projet de mon ami. Son côté est basé sur l'architecture Spring et comporte une tâche relativement simple qui nécessite une exécution planifiée. Après avoir compris ses besoins, il a proposé une implémentation Spring+quartz relativement simple.
Notez que cet article explique uniquement comment effectuer les tâches planifiées les plus simples dans le cadre du projet Spring terminé.
La première étape est de connaître l'architecture Spring, qui est très intéressante et intéressante. L'effet de brancher et de débrancher librement les modules fonctionnels peut être obtenu. Le projet d'ingénierie est basé sur la gestion des dépendances des packages MAVEN, alors listez les références des packages de dépendances nécessaires cette fois-ci :
1 <!-- 定时器依赖 开始 --> 2 <dependency> 3 <groupId>org.springframework</groupId> 4 <artifactId>spring-context-support</artifactId> 5 <version>4.0.2.RELEASE</version> 6 </dependency> 7 8 9 10 <dependency>11 <groupId>org.quartz-scheduler</groupId>12 <artifactId>quartz</artifactId>13 <version>2.2.1</version>14 </dependency>15 <!-- 定时器依赖 结束 -->
Bien sûr, cela dépend de la correspondance de la version Spring correspondante. Notre projet ici est 4.0.2. Le package précédent spring-context-support est principalement utilisé comme composant pour la communication et la gestion entre Spring et quartz. S'il est commenté, une erreur comme celle-ci sera signalée
1 <context-param>2 <param-name>contextConfigLocation</param-name>3 <param-value>classpath:spring-*.xml</param-value>4 </context-param>
Avec cette configuration, Le projet saura comment l'appeler. Après avoir réalisé cette étape, nous pouvons continuer à avancer ;
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 "> 7 8 <!-- 启动触发器的配置开始 --> 9 <bean name="startQuertz" lazy-init="false" autowire="no" 10 class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 11 <property name="triggers"> 12 <list> 13 <ref bean="myJobTrigger" /> 14 </list> 15 </property> 16 </bean> 17 <!-- 启动触发器的配置结束 --> 18 19 <!-- 调度的配置开始 --> 20 <!-- 21 quartz-1.8以前的配置 22 <bean id="myJobTrigger" 23 class="org.springframework.scheduling.quartz.CronTriggerBean"> 24 <property name="jobDetail"> 25 <ref bean="myJobDetail" /> 26 </property> 27 <property name="cronExpression"> 28 <value>0/1 * * * * ?</value> 29 </property> 30 </bean> 31 --> 32 <!-- quartz-2.x的配置 --> 33 <bean id="myJobTrigger" 34 class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 35 <property name="jobDetail"> 36 <ref bean="myJobDetail" /> 37 </property> 38 <property name="cronExpression"> 39 40 <value>0/10 * * * * ?</value>41 <!-- <value>1 52 * * * ?</value> --> 42 </property> 43 </bean> 44 <!-- 调度的配置结束 --> 45 46 <!-- job的配置开始 --> 47 <bean id="myJobDetail" 48 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 49 <property name="targetObject"> 50 <ref bean="myJob" /> 51 </property> 52 <property name="targetMethod"> 53 <value>work</value> 54 </property> 55 </bean> 56 <!-- job的配置结束 --> 57 58 <!-- 工作的bean --> 59 <bean id="myJob" class="com.tec.kevin.quartz.jobTest" /> 60 61 </beans>
L'image ci-dessus est spécifique Le nom de la classe d'implémentation métier doit être le même que la configuration de la tâche planifiée dans la figure ci-dessous.
Comme vous pouvez le voir ici, la tâche planifiée est exécutée toutes les 10 secondes selon notre configuration précédente
Il a été exécuté deux fois en même temps. La raison trouvée plus tard était que lors de la configuration de web.xml, la tâche planifiée était configurée à plusieurs reprises, ce qui entraînait son exécution plusieurs fois. Si vous rencontrez cette situation, vous pouvez vous référer à ma solution.
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!