zoukankan      html  css  js  c++  java
  • spring定时任务的配置使用

    spring的定时任务配置分为三个步骤: 
    1、定义任务 
    2、任务执行策略配置 
    3、启动任务

    1、定义任务

    <!--要定时执行的方法--> 
    <bean id="testTaskJob" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject"> 
    <!--指定要定时执行的方法所在类,将定时任务定义成bean--> 
    <ref bean="testTask" /> 
    </property> 
    <property name="targetMethod"> 
    <!--指定定时执行的方法--> 
    <value>execute</value> 
    </property> 
    <property name="concurrent"> 
    <!--指定目标封装为有状态的任务,有状态的任务不能并发执行,无状态的任务可并发执行--> 
    <value>false</value> 
    </property> 
    </bean> 

    2、任务执行策略配置 

    (1) 指定重复间隔的定时任务

    <!-- 调度时间设置--> 
    <bean id="testTaskJobTrigger" 
    class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
    <property name="jobDetail"> 
    <ref bean="testTaskJob" /> 
    </property> 
    <!-- 延时启动时间,单位ms --> 
    <property name="startDelay" value="60000"></property> 
    <!-- 重复间隔时间,单位ms --> 
    <property name="repeatInterval" value="60000"> 
    </property> 
    </bean> 

    (2)按周期执行的任务

     <!-- 定义触发时间 --> 
        <bean id="doTime" 
            class="org.springframework.scheduling.quartz.CronTriggerBean"> 
            <property name="jobDetail"> 
                <ref bean="testTaskJob" /> 
            </property> 
            <!-- cron表达式,此处是每天10点42执行 --> 
            <property name="cronExpression"> 
                <value>0 42 10 * * ?</value> 
            </property> 
        </bean> 

    3、启动任务

    <!--启动工作--> 
    <bean lazy-init="false" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
    <list> 
    <!-- 这里添加多个定时任务触发器,对应第2步的bean id --> 
    <ref local="testTaskJobTrigger" /> 
    </list> 
    </property> 
    </bean> 

    至此,系统启动的时候,就能加载定时任务,并按照指定的定时策略执行。

    对于一次性定时任务,一般有如下几种形式:(1)使用spring的init方法;(2)在使用时判断是否需要加载,确保只执行一次。

    cron表达式的基本使用:

    字段 允许值 允许的特殊字符 
    秒 0-59 , - * / 
    分 0-59 , - * / 
    小时 0-23 , - * / 
    日期 1-31 , - * ? / L W C 
    月份 1-12 或者 JAN-DEC , - * / 
    星期 1-7 或者 SUN-SAT , - * ? / L C # 
    年(可选) 留空, 1970-2099 , - * / 
    表达式意义 
    "0 0 12 * * ?" 每天中午12点触发 
    "0 15 10 ? * *" 每天上午10:15触发 
    "0 15 10 * * ?" 每天上午10:15触发 
    "0 15 10 * * ? *" 每天上午10:15触发 
    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
    "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
    "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
    "0 15 10 15 * ?" 每月15日上午10:15触发 
    "0 15 10 L * ?" 每月最后一日的上午10:15触发 
    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
    每天早上6点 
    0 6 * * * 
    每两个小时 
    0 */2 * * * 
    晚上11点到早上8点之间每两个小时,早上八点 
    0 23-7/2,8 * * * 
    每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
    0 11 4 * 1-3 
    1月1日早上4点 
    0 4 1 1 *

  • 相关阅读:
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Maximum Depth of Binary Tree
    Sharepoint 2013 创建TimeJob 自动发送邮件
    IE8 不能够在Sharepoint平台上在线打开Office文档解决方案
    TFS安装与管理
    局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP
    JS 隐藏Sharepoint中List Item View页面的某一个字段
    SharePoint Calculated Column Formulas & Functions
    JS 两个一组数组转二维数组
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/5043853.html
Copyright © 2011-2022 走看看