一、spring定時任務能夠使用JDK的Timer類庫來作任務調度,不過不能夠像cron服務那樣能夠指定具體年、月、日的時間。只能將時間經過換算成微秒後傳給它。web
類繼承TimerTask類。spring
<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">app
<!--程序啓動後開始執行任務的延遲時間 -->spa
<property name="delay" value="0" />unix
<!--每隔一天【一天=24×60×60×1000微秒】執行一次-->orm
<property name="period" value="86400000" />xml
<!--業務統計報表bean -->繼承
<property name="timerTask" ref="businessReport" />it
</bean>io
其中period就是一天的微秒數。若是每個月1日運行一次,那就複雜了,不知如何配置。由於月份有大、小月之分,每個月的微秒數都不同。
使用Quatrze類庫不但有JDK的Timer類庫的配置,還有着相似於unix的cron服務的配置。類繼承QuartzJobBean
二、具體的步驟以下:
① 編寫業務類,該類繼承了QuartzJobBean,主要的邏輯在execute方法中編寫
②配置spring的applicationContext.xml文件
2.1 配置任務JobDetailBean
2.2配置觸發器 CronTriggerBean
2.3配置調度器 SchedulerFactoryBean
③ 所須要的jar包:
spring.jar,quartz.jar,commons-logging-1.0.4.jar,commons-dbcp-1.2.2.jar,commons-pool-1.3.jar
④把quartz.properties放到類路徑下
三、Quartz的兩大核心是任務和觸發器,觸發器分爲CronTrigger和SimpleTrigger。CronTrigger支持比SimpleTrigger更具體的調度,基於cron表達式,CronTrigger支持相似日立的重複間隔,而不是單一的時間間隔。