最近做了一个数据同步功能,要求晚上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 ?
然后在要调用的定时任务的工作类中把相关定时任务的方法写好就完事儿啦,打完收工!