1.首先要加入任務計劃的相關的jar包,這里除了需要加Spring3.1.0的jar,還需要加quartz-all-1.8.6.jarslf4j-api-1.5.8.jar
slf4j-log4j12.jar這三個包,如果你是SSH整合的項目,里面有下面的兩個包了,就可以不加,只加上面的一個就可以了。
2.接下來就是寫Spring的配置文件了:如下:
<!-- 任務計劃 --><!-- 要調用的工作 --><bean id="timerAction" class="cn.gov.csrc.report.action.TimerAction"></bean><!-- 定義調用對象和調用對象的方法 --><bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><!-- 調用的類 --><property name="targetObject"><ref bean="timerAction"/></property><!-- 調用類中的方法 --><property name="targetMethod"><value>start</value></property></bean><!-- 定義觸發時間 --><bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail"><ref bean="jobtask"/></property><!-- cron表達式 --><property name="cronExpression"><!-- 每天晚上11點59分鐘59秒執行一次 --><value>0 59 23 * * ?</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="doTime"/></list></property></bean>
3.最后的你要執行的action類:如下:
package cn.gov.csrc.report.action;import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;public class TimerAction extends QuartzJobBean{private int timeout;public void setTimeout(int timeout) {this.timeout = timeout;}@Overrideprotected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {// TODO Auto-generated method stub}public void start(){System.out.println("定時器開始了");}
}
4.下面簡單的介紹一下cron expressions(調度表達式)
例子列表如下:
表達式 解釋
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時觸發.
5.最后附上quartz的jar包和表達式生成工具的下載地址:http://pan.baidu.com/s/1o6M3PB8