• spring的定时任务配置


    本文来源于:http://myspace1916.iteye.com/blog/1570707

    也可参考:http://www.oschina.net/question/8676_9032

    (个人只是为了做笔记)

    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 *

    关于java文件加载和初始化顺序问题分析

    参考:http://blog.csdn.net/haorengoodman/article/details/23281343

  • 相关阅读:
    3.node.js AssertionError: false == true错误解决
    9.获取当前时区时间和utc时间的工具方法
    2.Express封装mysq方法
    1.Express初识
    poj 3617
    前缀和
    pop 反序列化
    Reverse前两个题
    前两个Web题
    Misc
  • 原文地址:https://www.cnblogs.com/renpei/p/5477816.html
Copyright © 2020-2023  润新知