• Quartz


    1、导入jar包

     2、写一个POJO,也就是一个普通java类,方法名任意   

    public class MyJob {
    
    	public void send() {
    		System.out.println("任务执行完成了:"+new Date());
    	}
    	
    }
    

    3、配置一下此POJO的bean以及调度Quartz和spring整合的bean 

    	 <!-- 定义一个任务 -->
       <bean id="myJob" class="com.cb.job.MyJob"></bean>
       
       <!-- 定义一个MethodInvoingJobDetailFactoryBean -->
       <bean id="methodInvokingJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
           <property name="targetObject" ref="myJob"></property>
           <property name="targetMethod" value="send"></property>
       </bean>
       
       <!-- 指定时间 -->
       <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
              <property name="jobDetail" ref="methodInvokingJob"></property>
              <property name="cronExpression" value="0/1 * * * * ? *"></property>
       </bean>
       
       <!-- 指定一个总调度器 -->
       <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          <property name="triggers">
              <list>
                  <ref bean="cronTrigger"></ref>
              </list>
          </property>
       </bean>
    	
    

    配置说明: 

    1、org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类为指定哪个pojo为调度类,此类中哪个方法需要执行,这些都通过属性注入:

                    <property name="targetObject" ref="myJob"></property>,targetObject为指定哪个bean为调度类

                    <property name="targetMethod" value="send"></property>,为指定此POJO中哪个方法需要进行调度

    2、org.springframework.scheduling.quartz.CronTriggerFactoryBean配置调度执行时机,一般是通过指定表达式来决定

                   <property name="jobDetail" ref="methodInvokingJob"></property>,为指定需要配置哪个调度

                  <property name="cronExpression" value="0/1 * * * * ? *"></property>,为配置调度触发的表达式,依次是 秒 分 钟 时 日 月 周 年 ,反正周和日两个不能同时为*,得有一个为?,这个框架这么规定的

    3、org.springframework.scheduling.quartz.SchedulerFactoryBean类为总的触发调度器,其可以配置多个调度,通过list集合注入,可以配置多个任务

              <list>
                  <ref bean="cronTrigger"></ref>
              </list>
    

    quartz组件的难点就是在调度时间配置上,采用cron表达式,配置详解如下:

    cron表达式由7个部分构成:由年周月日时分秒这个7个单位构成,最前面是秒,依次类推,个单位之间以空格隔开,其中年为非必须构成,其他6个是必须的,如* 30 17 * * ?代表每天1730分触发一次调度,其中?号只能日和周,与* 一样代表任意

    同一单位触发两次以逗号分割,如 * 10,20 * * * ?代表每第10分钟和第20分钟的时候触发一次 ,是一个或的意思

    斜杠/代表递增,如0/5 代表从0开始,每5秒触发一次

    -代表范围,如3-8代表345678秒触发依次,只能3-8顺序执行,不能8-3倒叙执行,跟时钟摆针一样,只能正着走,不能倒着走

    字母L只能放在日和周上,代表最后,放在日上代表在本月的最后一天,放周上其实也就是周六,周是从周日1-周六7结束

    W代表工作日,只能用在日上,如果刚好是周六日,那么以最近的上下浮动一天到工作日,如周六的话,就提前到周五,如果周日的话,那么顺延到周一上班再触发

    如果不懂表达式的话,可以到网上用cron在线生成器自动来生成

    http://cron.qqe2.com/ 

  • 相关阅读:
    【6.29】数组和方法
    【6.28】判断和循环
    【6.27】两个数交换的4种方法
    NodeJS学习笔记
    准备使用马克飞象写博客
    前端基础
    学习笔记
    数据结构 — Java链表
    Java 日期类型与字符串的相互转换
    Scala(一)基础
  • 原文地址:https://www.cnblogs.com/javabg/p/7354660.html
Copyright © 2020-2023  润新知