版權聲明:本文為樓主原創文章,未經樓主允許不得轉載,如要轉載請注明來源。
說起定時任務,開發的小伙伴們肯定不陌生了。有些事總是需要計算機去完成的,而不是傻傻的靠我們自己去。可是好多人對定時器總感覺很陌生,今天樓主就帶小伙伴們揭開它的神秘面紗,講解一下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>