zoukankan      html  css  js  c++  java
  • spring+quartz 实现定时任务一

    一般情况下,在web工程里面实现一个随着工程启动而自动启动的,并且定时完成某些操作的功能是很简单的.

    比如在web.xml里面定义一个servlet,然后把load-on-startup定义为1即可.

    具体的定时逻辑就在这个servlet里面实现的.

    但是随着web开发的逐渐发展,大量比较好的框架得到了运用.如spring,springmvc等,这样的话,再直接修改web.xml就有点简单粗暴了.

    所以就才用了spring+quartz来优雅的实现启动自动运行的定时任务.

    本项目基于spring+springmvc实现,基本配置略去,仅仅提到了最主要的配置文件.

    1. 定义一个bean文件作为要执行的task

    <bean name="reportTask" class="com.aw.task.ReportTask" />

    2. 定义一个bean,使用reportTask作为参数

    1 <bean id="generateReport" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    2   <property name="targetObject">
    3     <ref bean="reportTask"/><!-- 指定具体拦截哪个定时任务 -->
    4   </property>
    5   <property name="targetMethod">
    6     <value>generate</value>
    7   </property>  
    8 </bean>

    3. 定义一个bean,使用generateReport作为参数

    <!-- 用cron表达式定义定时任务执行时间 -->  
        <bean id="gr" class="org.springframework.scheduling.quartz.CronTriggerBean">  
          <property name="jobDetail">  
             <ref bean="generateReport"/><!-- 指明要调用哪个任务 -->  
          </property>  
          <!-- cron表达式 -->  
          <property name="cronExpression">            
              <value>0 0/5 * * * ?</value>  
          </property>  
        </bean>

    其中cronExpression作为控制任务启动定时配置,我这个配置是每5分钟执行一次.

    其他的配置请百度,有详细的解释

    4. 定义入口bean

    <bean id="startReport" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
            <property name="triggers">  
                <list>  
                    <ref bean="gr"/>                      
                </list>  
            </property>  
        </bean>  

    完成了上面四步配置以后,就可以在web工程启动的时候,优雅的启动一个定时器任务了

  • 相关阅读:
    3.2 线程复用:线程池
    3.1.7 线程阻塞工具类:LockSupport
    3.1.6 循环栅栏:CyclicBarrier
    3.1.4 读写锁
    3.1.5 倒计时器:CountDownLatch
    3.1.3 允许多个线程同时访问:信号量
    3.1.2 condition 条件
    3.1.1 重入锁 以及源码分析
    2.8.4 错误的加锁
    jsp中 scope="application" 表示
  • 原文地址:https://www.cnblogs.com/raspberry/p/5534607.html
Copyright © 2011-2022 走看看