zoukankan      html  css  js  c++  java
  • Spring注解实现定时功能以及Quartz定时器

    • Spring注解实现:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz。
    1. maven配置:
      <!--quartz-->
      <dependency>
          <groupId>org.quartz-scheduler</groupId>
          <artifactId>quartz</artifactId>
          <version>2.2.1</version>
      </dependency>
      <dependency>
          <groupId>org.quartz-scheduler</groupId>
          <artifactId>quartz-jobs</artifactId>
          <version>2.2.1</version>
      </dependency>
    2. applicationContext.xml配置:
      <?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"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="   
               http://www.springframework.org/schema/beans   
               http://www.springframework.org/schema/beans/spring-beans.xsd   
               http://www.springframework.org/schema/context   
               http://www.springframework.org/schema/context/spring-context.xsd  
               http://www.springframework.org/schema/mvc   
               http://www.springframework.org/schema/mvc/spring-mvc.xsd
               http://www.springframework.org/schema/task 
               http://www.springframework.org/schema/task/spring-task.xsd ">
           <!--启用注解,加载定时任务-->
           <task:annotation-driven />
           <context:annotation-config />
           <!--定时任务扫描的包-->
           <context:component-scan base-package="*.*.*"/>
      </beans>
    3. 实现:
      import org.springframework.scheduling.annotation.Scheduled;
      import org.springframework.stereotype.Component;
      
      @Component
      public class TimeTest {
      
           @Scheduled(cron="*/3 * * * * ?")//每10秒跑一次任务
           public void tesTime(){
                System.out.println("定时器执行成功!---------66666----------");
           }
      }


    • 配置Quartz实现定时器功能:
      • applicationContext.xml配置:
    <?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"
          xmlns:context="http://www.springframework.org/schema/context"
          xmlns:mvc="http://www.springframework.org/schema/mvc"
          xsi:schemaLocation="   
              http://www.springframework.org/schema/beans   
              http://www.springframework.org/schema/beans/spring-beans.xsd   
              http://www.springframework.org/schema/context   
              http://www.springframework.org/schema/context/spring-context.xsd  
              http://www.springframework.org/schema/mvc   
              http://www.springframework.org/schema/mvc/spring-mvc.xsd">
              
          <!--扫描包  -->    
          <context:component-scan base-package="com.*.*" />
    
          <!-- 要调用的工作类 -->
          <bean id="timeTestBean" class="com.*.*.TimeTest"></bean>
    
          <!-- 定义调用对象和调用对象的方法 -->
          <bean id="job" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
              <!-- 调用的类 -->
              <property name="targetObject" ref="timeTestBean"></property>
              <!-- 调用类中的方法 -->
              <property name="targetMethod" value="tesTime"></property>
          </bean>
    
          <!-- 定义触发时间 -->
          <bean id="time" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
              <property name="jobDetail" ref="job"></property>
              <!-- cron表达式 -->
              <property name="cronExpression">
                  <value>0/2 * * * * ?</value><!-- 每2秒执行一次 -->
              </property>
          </bean>
          
          <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
          <!-- lazy-init="false" autowire="no" -->
          <bean id="scheduler" 
              class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
              <property name="triggers">
                  <list>
                      <ref bean="time" />
                  </list>
              </property>
          </bean>
     </beans>


    • 时间配置:
    示例如下:
    0 0 12 * * ?---------------在每天中午12:00触发 
    0 15 10 ? * *---------------每天上午10:15 触发 
    0 15 10 * * ?---------------每天上午10:15 触发 
    0 15 10 * * ? *---------------每天上午10:15 触发 
    0 15 10 * * ? 2005---------------在2005年中的每天上午10:15 触发 
    0 * 14 * * ?---------------每天在下午2:00至2:59之间每分钟触发一次 
    0 0/5 14 * * ?---------------每天在下午2:00至2:59之间每5分钟触发一次 
    0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次 
    0 0-5 14 * * ?---------------每天在下午2:00至2:05之间每分钟触发一次 
    0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44时触发 
    0 15 10 ? * MON-FRI---------------从星期一至星期五的每天上午10:15触发 
    0 15 10 15 * ?---------------在每个月的每15天的上午10:15触发 
    0 15 10 L * ?---------------在每个月的最后一天的上午10:15触发 
    0 15 10 ? * 6L---------------在每个月的最后一个星期五的上午10:15触发 
    0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发 
    0 15 10 ? * 6#3---------------在每个月的第三个星期五的上午10:15触发 
    0 0 12 1/5 * ?---------------从每月的第一天起每过5天的中午12:00时触发
  • 相关阅读:
    route-over VS mesh-under
    IOS算法(三)之插入排序
    GitHub学习笔记
    Python-面向对象 (二 继承)
    POJ 3518 Prime Gap(素数题)
    struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)
    first move advantage_百度搜索
    【绿茶书情】:《SOHO小报》和《凤…
    潘石屹的SOHO小报猝死
    ASP.NET Hashtable输出JSON格式数据
  • 原文地址:https://www.cnblogs.com/LJing21/p/10179928.html
Copyright © 2011-2022 走看看