zoukankan      html  css  js  c++  java
  • 001-spring结合quartz使用

    一、添加pom

    二、定义业务类

    public class  TestJobTask{  
          /** 
           *业务逻辑处理 
           */  
            public void   service(){  
                /**业务逻辑*/  
                    ..  
            }  
    }  

    二、配置spring的xml

        <!-- 线程执行器配置,用于任务注册 -->
        <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>
        <!-- 业务对象 -->
        <bean id="testJobTask" class="com.mike.scheduling.TestJobTask"/>
        <!-- 调度业务 -->
        <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="testJobTask"/>
            <property name="targetMethod" value="service"/>
        </bean>
        <!-- 第一种触发时间,采用类似linux的cron,配置时间的表示发出丰富-->
        <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail" ref="jobDetail"/>
            <!--Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次 -->
            <property name="cronExpression" value="10 0/1 * * * ?"/>
        </bean>
        <!-- 第二种,采用比较简话的方式,申明延迟时间和间隔时间-->
        <bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
            <!--延迟10秒启动,然后每隔1分钟执行一次 -->
            <property name="jobDetail" ref="jobDetail"/>
            <property name="startDelay" value="10000"/>
            <property name="repeatInterval" value="60000"/>
        </bean>
        <!-- 设置调度 -->
        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="cronTrigger"/>
                </list>
            </property>
            <property name="taskExecutor" ref="executor"/>
        </bean>

    启动容器即可,已经将spring和quartz结合完毕

    根据上面spring的配置,我们就比较清楚quartz的内部情况,下面我们主要详解配置涉及到的每个点
        1.我们先从最后一个步骤看起, SchedulerFactoryBean ,scheduler的工厂实现,里面可以生产出对应的多个jobDetail和trigger,每个jobDetail对应trigger代表一个任务
              Quartz的SchedulerFactory是标准的工厂类,不太适合在Spring环境下使用。此外,为了保证Scheduler能够感知 Spring容器的生命周期,完成自动启动和关闭的操作,必须让Scheduler和Spring容器的生命周期相关联。以便在Spring容器启动后, Scheduler自动开始工作,而在Spring容器关闭前,自动关闭Scheduler。为此,Spring提供 SchedulerFactoryBean,这个FactoryBean大致拥有以下的功能: 

         1)以更具Bean风格的方式为Scheduler提供配置信息; 

         2)让Scheduler和Spring容器的生命周期建立关联,相生相息; 

         3)通过属性配置部分或全部代替Quartz自身的配置文件。 

      2.jobDetail,表示一个可执行的业务调用
      
      3.trigger:调度的时间计划,什么时候,每隔多少时间可执行等时间计划

      4. ThreadPoolTaskExecutor,线程池,用来并行执行每个对应的job,提高效率,这也是上面提到不推荐使用jdk自身timer的一个很重要的原因

  • 相关阅读:
    USBkiller 破解绿色版 by TK
    北京理工大学信息安全与对抗竞赛crackme02分析
    EnMp3Player 破解
    IDA相关下载
    猜数游戏 by TK QQ:86935367
    mp3播放器 by TK QQ:86935367
    UPX Easy GUI 汉化版by TK
    superdic cracked by TK
    vc 获取机器码
    (转)UITableView使用
  • 原文地址:https://www.cnblogs.com/bjlhx/p/6992762.html
Copyright © 2011-2022 走看看