首页 > 技术文章 > spring mvc定时任务的简单使用

xu-lei 2016-09-09 14:29 原文

 

版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源。

  说起定时任务,开发的小伙伴们肯定不陌生了。有些事总是需要计算机去完成的,而不是傻傻的靠我们自己去。可是好多人对定时器总感觉很陌生,今天楼主就带小伙伴们揭开它的神秘面纱,讲解一下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>


 

 

推荐阅读