• Spring集成Quartz定时任务框架介绍


    在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。
    我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。
    使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍。

    一、增加所依赖的JAR包
    1、增加Spring的Maven依赖

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.5.RELEASE</version>
    </dependency>


    2、增加Quartz的Maven依赖

    <dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>1.8.4</version>
    </dependency>

    二、增加定时业务逻辑类

    复制代码
    public class ExpireJobTask {
    /** Logger */
    private static final Logger logger = LoggerFactory.getLogger(ExpireJobTask.class);

    /**
    * 业务逻辑处理
    */
    public void doBiz() {
    // 执行业务逻辑
    // ........
    }
    }
    复制代码


    ExpireJobTask业务逻辑类与一般普通的类没有任务区别,它定义的doBiz方法即为调度业务方法。

    三、增加Spring配置
    1、增加一个线程池

    复制代码
    <!-- 线程执行器配置,用于任务注册 -->
    <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="10" />
    <property name="maxPoolSize" value="100" />
    <property name="queueCapacity" value="500" />
    </bean>
    复制代码


    2、定义业务逻辑处理类

    <!-- 业务对象 -->
    <bean id="bizObject" class="com.aboy.potak.common.toolkit.scheduling.ExpireJobTask" />


    3、增加调度业务逻辑

    复制代码
    <!-- 调度业务 -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="bizObject" />
    <property name="targetMethod" value="doBiz" />
    </bean>
    复制代码


    上面的配置中,我们以bizObject.doBiz方法为将要调度的业务执行逻辑。
    4、增加调度触发器

    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="jobDetail" />
    <property name="cronExpression" value="10 0/1 * * * ?" />
    </bean>


    Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次。

    <bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail" ref="jobDetail" />
    <property name="startDelay" value="10000" />
    <property name="repeatInterval" value="60000" />
    </bean>


    该调度表示,延迟10秒启动,然后每隔1分钟执行一次。
    5、增加调度

    复制代码
    <!-- 设置调度 -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
    <list>
    <ref bean="cronTrigger" />
    </list>
    </property>
    <property name="taskExecutor" ref="executor" />
    </bean>
    复制代码


    triggers属性中,我们可以增加多个触发器。

    到此,Spring已经与Quartz完美的结合了,我们接下来的工作就是启动系统,开始调度了。

  • 相关阅读:
    SQL-W3School-高级:SQL ALIAS(别名)
    SQL-W3School-高级:SQL BETWEEN 操作符
    SQL-W3School-高级:SQL IN 操作符
    SQL-W3School-高级:SQL 通配符
    C语言实现定积分求解方法
    android使用webview上传文件(支持相册和拍照)
    POJ2349+Prim
    nyist 740 “炫舞家“ST(动态规划)
    paip.php eclipse output echo 乱码
    Deep Learning论文笔记之(八)Deep Learning最新综述
  • 原文地址:https://www.cnblogs.com/duanxz/p/5050924.html
Copyright © 2020-2023  润新知