Maison  >  Article  >  Java  >  Code d'implémentation des tâches planifiées Spring en Java

Code d'implémentation des tâches planifiées Spring en Java

高洛峰
高洛峰original
2017-02-07 15:15:541348parcourir

import org.apache.log4j.*;
public class TaskJob {
       public static Logger log = Logger
                     .getLogger(TaskJob.class);
       public void SayHello() {
              // TODO Auto-generated method stub
              try {
                     log.info("处理任务开始>........");
                     // 业务逻辑代码调用
                     System.out.println("时间[" + new java.util.Date().toLocaleString()
                                   + "]----->大家好啊!");
                     log.info("处理任务结束!");
              } catch (Exception e) {
                     log.error("处理任务出现异常", e);
              }
       }
}

2. Ensuite, configurez-le au printemps :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean name="taskJob" class="util.TaskJob" />
    <bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject">
           <ref bean="taskJob" />
       </property>
       <property name="targetMethod">
           <value>SayHello</value>
       </property>
    </bean>
    <!-- 配置触发器 -->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
       <property name="jobDetail">
           <ref bean="methodInvokingJobDetail" />
       </property>
       <!-- 每天的8点到21点每隔1分钟触发,具体说明见附录 -->
       <property name="cronExpression">
           <value>0 * 08-21 * * ?</value>
       </property>
    </bean>
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <!-- 添加触发器 -->
       <property name="triggers">
           <list>
              <ref local="cronTrigger" />
           </list>
       </property>
    </bean>
</beans>

3. Pour tester la classe d'exécution, vous pouvez voir les tâches planifiées en cours d'exécution tant que vous chargez le fichier de configuration Spring.

package util;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestApp {

public static void main(String[] args) {
    // TODO Auto-generated method stub
        System.out.println("加载spring配置文件....");
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
      System.out.println("加载配置文件完毕!");
//   ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml");
}
}

Si vous souhaitez l'exécuter dans un projet Web, ajoutez le code suivant à web.xml :

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Voici quelques instructions extraites d'Internet :
Champ autorisé Les valeurs autorisent les caractères spéciaux
secondes 0-59, - * /
minutes 0-59, - * /
heures 0-23, - * /
dates 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, - / ?" Déclenché tous les jours à 10h15
"0 15 10 * * ? *" Déclenché tous les jours à 10h15
"0 15 10 * * 2005" Déclenché tous les jours à 10h15 en 2005
"0 * 14 * * ?" se déclenche toutes les 1 minutes de 14h à 14h59 tous les jours
"0 0/5 14 * * ?" PM à 14h55 tous les jours Déclenchement en 5 minutes
"0 0/5 14,18 * * ?" Déclenchement toutes les 5 minutes de 14h à 14h55 et de 18h à 18h55
"0 0- 5 14** 🎜>"0 15 10 ? * LUN-FRI" Déclenché à 10h15 du lundi au vendredi
"0 15 10 15 * ?" Déclenché à 10h15 le 15 de chaque mois
"0 15 10 L* ?" Déclenche à 10h15 le dernier jour de chaque mois
"0 15 10 ? *6L" Déclenche à 10h15 le dernier vendredi de chaque mois
"0 15 10 ? * 6L 2002-2005" Déclenché le dernier vendredi de chaque mois à 10h15 de 2002 à 2005
"0 15 10 ? * 6#3" Déclenché le troisième vendredi de chaque mois à 10h15

Plus Pour les articles liés au code d'implémentation des tâches planifiées au printemps en Java, 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