版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源。
说起定时任务,开发的小伙伴们肯定不陌生了。有些事总是需要计算机去完成的,而不是傻傻的靠我们自己去。可是好多人对定时器总感觉很陌生,今天楼主就带小伙伴们揭开它的神秘面纱,讲解一下spring 定时器的配置。
1 <!-- 工作的bean --> 2 <bean id="myJob" class="weixin.test.controller.TestController" /> 3 4 <!-- job的配置开始 --> 5 <bean id="myJobDetail" 6 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 7 <property name="targetObject"> 8 <ref bean="myJob" /> 9 </property> 10 <property name="targetMethod"> 11 <value>test</value> 12 </property> 13 <!--concurrent=false 表示 不做并发执行 一个任务未完成下一个任务等待上一个任务--> 14 <property name="concurrent"> 15 <value>false</value> 16 </property> 17 </bean> 18 <!-- job的配置结束 --> 19 20 <!-- 调度的配置开始--> 21 <bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 22 <property name="jobDetail"> 23 <ref bean="myJobDetail" /> 24 </property> 25 <property name="cronExpression"> 26 <!-- 每1分钟执行 --> 27 <value>0 0/1 * * * ?</value> 28 </property> 29 </bean> 30 <!-- 调度的配置结束 --> 31 32 <!-- 启动触发器的配置开始 --> 33 <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 34 <property name="triggers"> 35 <list> 36 <ref bean="crontestJobTrigger" /> 37 </list> 38 </property> 39 </bean> 40 <!-- 启动触发器的配置结束 -->
配置中需要注意的地方,我已经标红,下面讲解一下。该配置我们从后向前看。首先第32-40行,是启动触发器的配置,这里面我标红了crontestJobTrigger,这个名字,你可以随便起,但是往上看21-28行,保证21行的名字和此名字一样即可。调度配置开始,同样23行的方法名称你可以修改,保证名字一致即可。多少时间执行一次同样在这里修改的。第1-18行是关联到实际需要执行的后台代码。我在这里后台controller是TestController,方法叫test.然后后台代码为:
public void test(){ System.out.println("定时器开始执行了,它说我是个好人"); }
ok,这样一个简单的定时器已经完成。那么有的小伙伴们要说,我一个程序要跑多个定时任务,怎么弄呢?简单。其实只要你理解了上面的代码,懂了它的执行顺序,就知道怎么配。下面我附上配置两个定时器的代码,供参考。
1 <!-- 工作的bean --> 2 <!-- <bean id="myJob" 3 <bean id="myJob" class="weixin.test.controller.TestController" /> 4 <!-- job的配置开始 --> 5 <bean id="myJobDetail" 6 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 7 <property name="targetObject"> 8 <ref bean="myJob" /> 9 </property> 10 <property name="targetMethod"> 11 <value>test</value> 12 </property> 13 <!--concurrent=false 表示 不做并发执行 一个任务未完成下一个任务等待上一个任务--> 14 <property name="concurrent"> 15 <value>false</value> 16 </property> 17 </bean> 18 <!-- job的配置结束 --> 19 20 <!-- 调度的配置开始**定时器1 --> 21 <bean id="crontestJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 22 <property name="jobDetail"> 23 <ref bean="myJobDetail" /> 24 </property> 25 <property name="cronExpression"> 26 <!-- 每1分钟执行 --> 27 <value>0 0/1 * * * ?</value> 28 </property> 29 </bean> 30 <!-- 调度的配置结束 --> 31 <!-- ************************** 定时器2************************** --> 32 33 <!-- 工作的bean --> 34 <bean id="myJob1" class="weixin.test.controller.TestController" /> 35 36 <!-- job的配置开始 --> 37 <bean id="myJobDetail1" 38 class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 39 <property name="targetObject"> 40 <ref bean="myJob1" /> 41 </property> 42 <property name="targetMethod"> 43 <value>test1</value> 44 </property> 45 <!--concurrent=false 表示 不做并发执行 一个任务未完成下一个任务等待上一个任务--> 46 <property name="concurrent"> 47 <value>false</value> 48 </property> 49 </bean> 50 <!-- job的配置结束 --> 51 52 <!-- 调度的配置开始****定时器2 --> 53 <bean id="crontestJobTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean"> 54 <property name="jobDetail"> 55 <ref bean="myJobDetail1" /> 56 </property> 57 <property name="cronExpression"> 58 <!-- 每1分钟执行 --> 59 <value>0 0/1 * * * ?</value> 60 </property> 61 </bean> 62 <!-- 调度的配置结束 --> 63 64 <!-- 启动触发器的配置开始 --> 65 <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 66 <property name="triggers"> 67 <list> 68 <ref bean="crontestJobTrigger" /> 69 <ref bean="crontestJobTrigger1" /> 70 </list> 71 </property> 72 </bean>