zoukankan      html  css  js  c++  java
  • spring quartz 配置

    quartz简介

      各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。任务调度本身涉及到多线程并发、运行时间规则制定和解析、场景保持与恢复、线程池维护等诸多方面的工作。如果直接使用自定义线程这种刀耕火种的原始办法,开发任务调度程序是一项颇具挑战性的工作。Java开源的好处就是:领域问题都能找到现成的解决方案。Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。

    1.调度类

    public class QuartzJobImpl{public void dailyCount() {
            System.out.println("每日统计开始...");
            System.out.println("-------------");
            System.out.println("每日统计结束...");
             
        }
    
        public void redisUpdate2Mysql() {
            System.out.println("定时任务开始...");
            System.out.println("-------------");
            System.out.println("-------------");
            System.out.println("定时任务结束..");
        }
    
    }

    2.spring  xml文件

       
      <!-- 注入调度类 -->
      <
    bean id="quartzJob" class="xxxx.QuartzJobImpl"/>
      <!-- 任务调度拦截 -->
       <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
         <!-- 拦截的类 -->
         <property name="targetObject"> <ref bean="quartzJob"/> </property>
         <!-- 具体的方法 -->
         <property name="targetMethod"> <value>redisUpdate2Mysql</value> </property> </bean> <bean id="jobtask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="quartzJob"/> </property> <property name="targetMethod"> <value>dailyCount</value> </property> </bean> <bean id="dotime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
         <!-- 指定执行的任务-->
         <property name="jobDetail">
           <ref bean="jobtask1"/>
         </property>
         <!-- 时间配置 -->
         <property name="cronExpression">
          <value>0 52 14 ? * *</value>

         </property>
      </bean>
        <bean id="dotime1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
            <property name="jobDetail">
                <ref bean="jobtask1"/>
            </property>
            <property name="cronExpression">
                <value>0/30 * * * * ?</value>
            </property>
        </bean>
      <!-- 让spring来自动管理quartz -->  
      <bean id="start" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers" > <list> <ref bean="dotime"/> <ref bean="dotime1"/> </list> </property> </bean>

    3.时间配置

    <!-- ====================
        
            字段         允许值     允许的特殊字符 
            秒         0-59    , - * / 
            分         0-59     , - * / 
            小时         0-23     , - * / 
            日期         1-31     , - * ? / L W C 
            月份         1-12 或者 JAN-DEC    , - * / 
            星期         1-7 或者 SUN-SAT    , - * ? / L C # 
            年(可选)     留空1970-2099        , - * /
    
            表达式意义 
            "0 0 12 * * ?" 每天中午12点触发 
            "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点到下午2:59期间的每1分钟触发 
            "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
            "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
            "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
            "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和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年至2005年的每月的最后一个星期五上午10:15触发 
            "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
            每天早上6点
            
            0 6 * * *
            
            每两个小时
            
            0 */2 * * * 
            晚上11点到早上8点之间每两个小时,早上八点
            
            0 23-7/2,8 * * *
            
            每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
            
            0 11 4 * 1-3 
            1月1日早上4点
            
            0 4 1 1 *
    
        ==================== -->

    其他知识:http://blog.csdn.net/lotusyangjun/article/details/6524712

  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/rookie404/p/5879979.html
Copyright © 2011-2022 走看看