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工程启动的时候,优雅的启动一个定时器任务了

  • 相关阅读:
    Android Wear真机蓝牙调试方法及错误解决方法,设备华为WATCH+小米5
    Ubuntu16.04 Selenium+python 环境搭建 Chromedriver安装
    Ubuntu16.04 为vim安装YouCompleteMe插件
    codeforces 676C Vasya and String 贪心 尺取法
    poj 1177 & hdu 1828 Picture 线段树 扫描线求矩形周长并
    hdu 1542 & poj 1151 Atlantis 线段树扫描线求矩形面积并
    fzu 2109 Mountain Number 数位DP
    fzu 2105 Digits Count 线段树
    codeforces 675D Tree Construction 数据结构
    codeforces 675C Money Transfers 贪心
  • 原文地址:https://www.cnblogs.com/raspberry/p/5534607.html
Copyright © 2011-2022 走看看