Avant-propos
En parlant de tâches planifiées, les développeurs les connaissent certainement. Certaines choses nécessitent toujours des ordinateurs pour être réalisées, plutôt que de les faire nous-mêmes. Cependant, beaucoup de gens ne sont toujours pas familiers avec les minuteries. Aujourd'hui, l'éditeur emmènera mes amis dévoiler son mystère et expliquer comment Spring utilise Squertz pour implémenter des tâches planifiées.
1. Jar requis
quartz-1.8.5.jar commons-logging.jar spring-core-3.0.5.RELEASE.jar spring-beans-3.0.5.RELEASE.jar spring-context-3.0.5.RELEASE.jar spring-context-support-3.0.5.RELEASE.jar spring-asm-3.0.5.RELEASE.jar spring-expression-3.0.5.RELEASE.jar spring.transaction-3.0.5.RELEASE.jar spring-web-3.0.5.RELEASE.jar
2. Fichier de configuration
Configurez ici lorsque vous souhaitez l'exécuter Quoi. est utilisée pour exécuter votre tâche planifiée ? Par exemple, la méthode generate de com.seewoedu.train.quartz.GenerateRewardListTask est exécutée à 2016.11.10 23:00:00 Ici, cron est utilisé pour spécifier l'heure d'exécution
.<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 启动触发器的配置开始 --> <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myJobTrigger" /> </list> </property> </bean> <!-- 启动触发器的配置结束 --> <!-- quartz-2.x的配置 --> <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="myJobDetail" /> </property> <property name="cronExpression"> <!--<value>10 0/1 * * * ?</value>--> <!-- Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次。 --> <value>0 0 9 10 12 ? 2016</value> <!-- Cron表达式“0 0 23 10 11 ? 2016”意为:只在2016.11.10 23:00:00 执行。 --> </property> </bean> <!-- 调度的配置结束 --> <!-- job的配置开始 --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="myJob" /> </property> <property name="targetMethod"> <value>generate</value> </property> </bean> <!-- job的配置结束 --> <!-- 工作的bean --> <bean id="myJob" class="com.seewoedu.train.quartz.GenerateRewardListTask" /> </beans>
3. Méthodes à exécuter
public class GenerateRewardListTask { @Autowired private GiftReceiveRecordService giftReceiveRecordService; org.slf4j.Logger logger = LoggerFactory.getLogger(GenerateRewardListTask.class); public void generate() throws Exception { giftReceiveRecordService.generateRewardMember(); //执行的方法 } }
4. Problèmes nécessitant une attention
1. Lorsque le délai d'exécution est spécifié à l'année. , il y aura un problème. Le problème est que lorsque vous démarrez le projet après cette heure, il continuera à signaler une erreur de fuite de mémoire, ce qui signifie probablement que vos tâches planifiées ne seront jamais exécutées, ce qui empêchera le projet de démarrer.
2. Les tâches planifiées sont implémentées en calculant l'intervalle de temps entre le moment où vous déployez le projet et le moment où vous souhaitez exécuter la tâche planifiée, plutôt que d'obtenir l'heure de votre serveur en temps réel, vous souhaitez donc tester si le la tâche planifiée prend effet en modifiant l'heure du serveur n'est pas réalisable.
Résumé
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra être utile aux études ou au travail de chacun. Si vous avez des questions, vous pouvez partir. un message à communiquer.
Pour plus d'articles sur Spring utilisant Squertz pour implémenter des tâches planifiées, veuillez faire attention au site Web PHP chinois !