• spring mvc定时任务的简单使用


     

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

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


     

  • 相关阅读:
    嵌入式软件开发环境搭建与工具推荐
    软件常用设计原则与实践:契约式接口设计、安全编码实践
    服务器崩掉 ,只剩下挂载文件,重现github docker 容器
    基础巩固篇 —— CountDownLatch的理解
    基础巩固篇 —— 对锁的理解
    基础巩固篇 —— 对不安全集合的理解
    基础巩固篇 —— 对CAS的理解
    基础巩固篇 —— 对volatile关键字的理解
    响应式布局
    jQuery Mobile 网格
  • 原文地址:https://www.cnblogs.com/xu-lei/p/5856533.html
Copyright © 2020-2023  润新知