定時器Quartz在Spring中的使用

前言:

我們知道Quartz是一個功能全面的,開源的作業調度服務,它可以集成、使用於任何的Java EE或Java SE程序 。

具體說明參照:http://quartz-scheduler.org/

這裏我們說一下它在Spring框架中的使用。

依賴的jar包:org.springframework.context.support-3.1.1.RELEASE.jar


一、寫一個被用於作業調度的類

package com.dt5000.quartz;
public class QuartzJob
{
    public void doJob(){
    	System.out.println(new Date()+"執行Quartz的任務");
    }
}

二、編寫spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>    
   <!-- 要調用的工作類 -->
	<bean id="quartzJob" class="com.dt5000.quartz.QuartzJob"></bean>
	<!-- 定義調用對象和調用對象的方法 -->
	<bean id="jobtask"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- 調用的類 -->
		<property name="targetObject">
			<ref bean="quartzJob" />
		</property>
		<!-- 調用類中的方法 -->
		<property name="targetMethod">
			<value>doJob</value>
		</property>
	</bean>
	<!-- 定義觸發時間 -->
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="jobtask" />
		</property>
		<!-- cron表達式 每天凌晨兩點執行任務-->
		<property name="cronExpression">
			<value>0 0 2 * * ?</value>
		</property>
	</bean>
	<!-- 總管理類 如果將lazy-init='false'那麼容器啓動就會執行調度程序 -->
	<bean id="startQuertz" lazy-init="false" autowire="no"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>    
</beans>

附:cronExpression表達式

一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素。 
按順序依次爲 
秒(0~59) 
分鐘(0~59) 
小時(0~23) 
天(月)(0~31,但是你需要考慮你月的天數) 
月(0~11) 
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 
7.年份(1970-2099) 

示例:

0 0 12 * * ?---------------在每天中午12:00觸發 
0 15 10 ? * *---------------每天上午10:15 觸發 
0 15 10 * * ?---------------每天上午10:15 觸發 
0 15 10 * * ? *---------------每天上午10:15 觸發 
0 15 10 * * ? 2005---------------在2005年中的每天上午10:15 觸發 
0 * 14 * * ?---------------每天在下午2:00至2:59之間每分鐘觸發一次 
0 0/5 14 * * ?---------------每天在下午2:00至2:59之間每5分鐘觸發一次 
0 0/5 14,18 * * ?---------------每天在下午2:00至2:59和6:00至6:59之間的每5分鐘觸發一次 
0 0-5 14 * * ?---------------每天在下午2:00至2:05之間每分鐘觸發一次 
0 10,44 14 ? 3 WED---------------每三月份的星期三在下午2:00和2:44時觸發 
0 15 10 ? * MON-FRI---------------從星期一至星期五的每天上午10:15觸發 
0 15 10 15 * ?---------------在每個月的每15天的上午10:15觸發 
0 15 10 L * ?---------------在每個月的最後一天的上午10:15觸發 
0 15 10 ? * 6L---------------在每個月的最後一個星期五的上午10:15觸發 
0 15 10 ? * 6L 2002-2005---------------在2002, 2003, 2004 and 2005年的每個月的最後一個星期五的上午10:15觸發 
0 15 10 ? * 6#3---------------在每個月的第三個星期五的上午10:15觸發 
0 0 12 1/5 * ?---------------從每月的第一天起每過5天的中午12:00時觸發 
0 11 11 11 11 ?---------------在每個11月11日的上午11:11時觸發.­


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章