一、导入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 * * ?表明天天17点30分触发一次调度,其中?号只能日和周,与* 同样表明任意 |
同一单位触发两次以逗号分割,如 * 10,20 * * * ?表明每第10分钟和第20分钟的时候触发一次 ,是一个或的意思 |
斜杠/表明递增,如0/5 表明从0开始,每5秒触发一次 |
-表明范围,如3-8表明3,4,5,6,7,8秒触发依次,只能3-8顺序执行,不能8-3倒叙执行,跟时钟摆针同样,只能正着走,不能倒着走 |
字母L只能放在日和周上,表明最后,放在日上表明在本月的最后一天,放周上其实也就是周六,周是从周日1-周六7结束 |
W表明工做日,只能用在日上,若是恰好是周六日,那么以最近的上下浮动一天到工做日,如周六的话,就提早到周五,若是周日的话,那么顺延到周一上班再触发 |
若是不懂表达式的话,能够到网上用cron在线生成器自动来生成
http://cron.qqe2.com/