一,首先下載quartz-1.6.0.jar架包,到lib目錄下 java
二,寫你本身定時器業務方法 spring
package com.lbnet.lzx.timing; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.scheduling.quartz.QuartzJobBean; import com.lbnet.lzx.service.IOrderService; public class OrderNoRefact extends QuartzJobBean{ private static BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml"); @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub IOrderService orderdao=(IOrderService)factory.getBean("OrderServiceImpl"); System.out.println("訂單超時!"); orderdao.updateOrderTimeOver(); } }
三。在spring文件中進行配置 apache
配置定時任務 <bean id="SchedulerTask3" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.lbnet.lzx.timing.OrderNoRefact</value> </property> </bean> 配置定時時間 <bean id="SchedulerTaskTrigger3" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="SchedulerTask3" /> <property name="cronExpression"> <value>0 0/30 0/1 * * ?</value> </property> </bean> 開啓定時任務 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="SchedulerTaskTrigger3" /> </list> </property> </bean>
四。一些定時參數意義 併發
0 0/30 0/1 * * ? 表明天天每30分鐘運行一次 app
0 0/3 0/1 * * ? 表明天天每3分鐘運行一次 ide
0 11 23 * * ? 表明天天晚上23:11運行一次 spa
五。若是重啓報異常 code
org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set; xml
請把commons-collections-2.1.1.jar,checkstytle-all.jar刪掉,而後加入commons-collections.jar包就OK了 get
targetMethod:指定須要執行的assetsMasterQuartz中的execute()方法
concurrent:對於相同的JobDetail,當指定多個Trigger時, 極可能第一個job完成以前,第二個job就開始了。指定concurrent設爲false,多個job不會併發運行,第二個job將不會在第一個job完成以前開始。
cronExpression :0 32 23 * * ? 表示天天23:32觸發
具體配置以下:
一個cron表達式有至少6個(也多是7個)由空格分隔的時間元素。從左至右,這些元素的定義以下:
1.秒(0–59)
2.分鐘(0–59)
3.小時(0–23)
4.月份中的日期(1–31)
5.月份(1–12或JAN–DEC)
6.星期中的日期(1–7或SUN–SAT)
7.年份(1970–2099)
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選)留空, 1970-2099 , - * /
表達式意義
"0 0 12 * * ?" 天天中午12點觸發
"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點到下午2:59期間的每1分鐘觸發
"0 0/5 14 * * ?" 在天天下午2點到下午2:55期間的每5分鐘觸發
"0 0/5 14,18 * * ?" 在天天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
"0 0-5 14 * * ?" 在天天下午2點到下午2:05期間的每1分鐘觸發
"0 10,44 14 ? 3 WED" 每一年三月的星期三的下午2:10和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年至2005年的每個月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每個月的第三個星期五上午10:15觸發
天天早上6點
0 6 * * *
每兩個小時
0 */2 * * *
晚上11點到早上7點之間每兩個小時,早上八點
0 23-7/2,8 * * *
每一個月的4號和每一個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3
1月1日早上4點
0 4 1 1 *
秒 分 時 日 月 星期
0 30 11,3 ? * 1-5 11:30 和3:30
0 45 23,11 * * ? 天天11:45和23:45觸發
triggers:經過再添加其餘的ref元素可在list中放置多個觸發器