最近做了一個數據同步功能,要求晚上0點去定時同步數據,這是個老項目框架用的ssh,定時任務基於quartz,廢話不多說,下面詳細說說相關配置。
在spring的配置文件中:
1 <!-- 0點定時任務相關配置 --> 2 3 <!-- 要調用的定時任務的工作類 --> 4 <bean id="tjsyncData" class="com.web.action.SyncDataAction" autowire="byName"/> 5 <!-- 總管理類 設置lazy-init='false'的話容器啟動就會執行調度程序 --> 6 <bean name="scheduler" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 7 <property name="triggers"> 8 <!-- 引用了觸發時間的bean --> 9 <list> 10 <ref bean="syncDataTime"/> 11 </list> 12 </property> 13 </bean> 14 <!-- 定義觸發的時間 --> 15 <bean id="syncDataTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 16 <!-- 引用調用類的bean --> 17 <property name="jobDetail" ref="syncData"/> 18 <!-- 秒 分 小時 --> 19 <property name="cronExpression" value="0 0 0 * * ?"/> 20 </bean> 21 22 <!-- 定義調用的類和調用的類的方法 --> 23 <bean id="syncData" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 24 <!-- 調用的類 --> 25 <property name="targetObject" ref="tjsyncData"/> 26 <!-- 調用類中的方法 --> 27 <property name="targetMethod" value="syncData"/> 28 <property name="concurrent" value="false" /> 29 </bean>
Cron表達式:由6個或7個由空格分隔的時間字段組成。
位置 | 時間域 | 取值范圍 | 允許的特殊字符 |
1 | 秒 | 0-59 | , - * / |
2 | 分鍾 | 0-59 | , - * / |
3 | 小時 | 0-23 | , - * / |
4 | 日期 | 1-31 | , - * ? / L W C |
5 | 月份 | 1-12 | , - * / |
6 | 星期 | 1-7 | , - * ? / L C # |
7 | 年份(可選) | 1970-2099 | , - * / |
以下是網上找的相關資料,僅供參考!
下面是一些常用的關於時間配置的Cron表達式:
每隔5秒執行一次:*/5 * * * * ?
每隔1分鍾執行一次:0 */1 * * * ?
每天23點執行一次:0 0 23 * * ?
每天凌晨1點執行一次:0 0 1 * * ?
每月1號凌晨1點執行一次:0 0 1 1 * ?
每月最后一天23點執行一次:0 0 23 L * ?
每周星期天凌晨1點實行一次:0 0 1 ? * L
在26分、29分、33分執行一次:0 26,29,33 * * * ?
每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?
每天12點觸發 :0 0 12 * * ?
每天10點15分觸發 :0 15 10 * * ?
每天下午的 2點到2點59分每分觸發:0 * 14 * * ?
每天下午的 2點到2點59分(整點開始,每隔5分觸發) :0 0/5 14 * * ?
每天下午的 2點到2點05分每分觸發:0 0-5 14 * * ?
每周5凌晨2點59分觸發:0 59 2 ? * FRI
從周一到周五每天上午的10點15分觸發 :0 15 10 ? * MON-FRI
每月15號上午10點15分觸發 :0 15 10 15 * ?
每月最后一天的10點15分觸發:0 15 10 L * ?
從2002年到2005年每月最后一周的星期五的10點15分觸發 :0 15 10 ? * 6L 2002-2005
每月的第一個中午開始每隔5天觸發一次:0 0 12 1/5 * ?
每年的11月11號 11點11分觸發(光棍節):0 11 11 11 11 ?
然后在要調用的定時任務的工作類中把相關定時任務的方法寫好就完事兒啦,打完收工!