一、導入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/