环境/条件:
-
JDK1.7
-
jar包 spring-context-support 4.2.6.RELEASE
-
jar包 spring-org.quartz-scheduler 2.2.1
-
idea
例:每天凌晨一点执行将年假表更新
1 public class YearLeaveService{ 2 3 private Dao dao; 4 5 public Dao getDao(){return dao;} 6 7 public void setDao(Dao dao){this.dao = dao;} 8 9 /** 10 *要定时执行的方法 11 */ 12 public void replaceAnnualLeaveByUsers(){ 13 /** 14 *逻辑…… 15 */ 16 } 17 }
第二步 配置定时器
1 <!--time-bean.xml--> 2 3 <?xml version="1.0" encoding="UTF-8"?> 4 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 5 6 <beans> 7 8 <!--调度工厂--> 9 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 10 <property name="triggers"> 11 <list> 12 <ref local="replaceYearLeaveTrigger" /><!--调度触发器--> 13 <!--……--> 14 <!--……--> 15 </list> 16 </property> 17 </bean> 18 19 <!--定时计算年数天假--> 20 <bean id="replaceYearLeave" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 21 <property name="targetObject" ref="yearLeaveService" /><!--调用类--> 22 <property name="targetMethod" value="replaceAnnualLeaveByUsers" /><!--调用方法--> 23 <property name="concurrent" value="false"/><!--是否同时--> 24 </bean> 25 <!--cron表达式触发器--> 26 <bean id="replaceYearLeaveTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 27 <property name="jobDetail" ref="replaceYearLeave"/><!--工作细节的bean--> 28 <property name="cronExpression" value="0 0 1 * * ?"/><!--每天凌晨1点执行一次0 0 1 * * ?--> 29 </bean> 30 31 <!--……--> 32 <!--……--> 33 </beans>
属性说明:
-
targetObject:类
-
targetMethod:方法
-
concurrent:是否同时(false:上一个定时任务未完成,此任务就不会开始;true:上一个定时任务问完成,此任务同时运行),一般为false
-
jobDetail:定时任务详情(就是前面的bean)
-
cronExpression:cron表达式 (cron在线生成工具:http://www.bejson.com/othertools/cron/)