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的一个很重要的原因

  • 相关阅读:
    2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
    在win10系统下安装和卸载Ubuntu系统(为了搞双系统)的各种办法
    2018 CCPC 中国大学生程序设计竞赛-网络选拔赛 1004(D题 )Find Integer(三角函数+费马大定理)
    HDU(杭州电子科技大学) 2614 Beat (BFS写法)
    SQL server用到的SQL语句备份下
    【SQL Server】SQL触发器经验详解
    SQL SERVER 语句大全
    sqlserver 触发器实例代码
    触发器deleted 表和 inserted 表详解
    SQL server触发器中 update insert delete 分别给写个例子被。
  • 原文地址:https://www.cnblogs.com/bjlhx/p/6992762.html
Copyright © 2011-2022 走看看