Quartz

一、导入jar包java

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

public class MyJob {

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

三、配置一下此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>
	

配置说明: spa

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

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

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

二、org.springframework.scheduling.quartz.CronTriggerFactoryBean配置调度执行时机,通常是经过指定表达式来决定table

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

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

三、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/

相关文章
相关标签/搜索