Quartz 任务调度框架整合Spring使用

简介

  Quartz是一个完全由java编写的开源作业调度框架,其实是启动定时任务的框架。使用时只需创建一个org.quartz.Job接口的实现类,实现唯一的方法:public void execute(JobExecutionContext context) throws JobExecutionException,将你的逻辑任务添加到execute()方法即可。

一、基本概念

(一)、执行对象

    Job :工作任务 ,你要做什么  

    Trigger:执行工作任务 触发条件 , 什么时间执行, 多久执行一次编写工作任务

    

(二)、 CronTrigger 的使用

  如果你需要像日历那样按日程来触发任务,而不是像 SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers 通常比 SimpleTrigger 更有用。

  Cron Expressions ——Cron 

    1. Seconds 秒

    2. Minutes 分钟
    3. Hours 小时
    4. Day-of-Month 月中的天
    5. Month 月
    6. Day-of-Week 周中的天
    7. Year (optional field) 年(可选的域)

  所有的域中的值都有特定的合法范围,这些值的合法范围相当明显,例如:秒和分域的合法值为 0 到 59,小时的合法范围是 0 到 23,Day-of-Month 中值得合法凡范围是 0 到 31,但是需要注意不同的月份中的天数不同。月份的合法值是 0 到 11。或者用字符串JAN,FEB MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV 及 DEC 来表示。Days-of-Week可以用1到7来表示(1=星期日)或者用字符串SUN, MON, TUE, WED,THU, FRI 和 SAT 来表示.

  通配符(‘*‘)可以被用来表示域中“每个”可能的值。因此在"Month"域中的*表示每个月,而在 Day-Of-Week 域中的*则表示“周中的每一天”。

  ‘/‘字符用来表示值的增量,例如, 如果分钟域中放入‘0/15‘,它表示“每隔 15 分钟,从 0 开始”,如果在份中域中使用‘3/20‘,则表示“小时中每隔 20 分钟,从第 3 分钟开始”或者另外相同的形式就是‘3,23,43‘。

  0 0 12 ? * 3 每周二中午 12 点执行任务
  0 0 0 0 * ? 每月 1 日 0 点执行任务

  注意:4.月中天和6.周中天不能同时取到*,表示任意一天时一个用*,另一个用?

二、 Spring 整合Quartz 

  在 Job 中 spring 管理的 Bean 无法注入,需要在 Scheduler 中自定义 JobFactory解决。

(一)、创建JobFactory,用于注入Job实现Spring管理

@Service("jobFactory")
public class JobFactory extends AdaptableJobFactory{

    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        Object jobInstance = super.createJobInstance(bundle);
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}

(二)、配置applicationContext.xml

  1、开启包扫描(JobFactory、工作任务的Service层所在的包)

<context:component-scan base-package="com.hehe.quartz.service" />

  2、工作任务JobDetail配置----(JobDetailFactoryBean)

<bean id="helloJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  // 注入调度任务Job的Class文件
  <property name="jobClass" value="cn.itcast.quartz.job.HelloJob"/>
</bean>

  3、触发器Trigger配置----(SimpleTriggerFactoryBean)

// simmpleTrigger<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">  // 注入调度任务job   <property name="jobDetail" ref="helloJob" />  // 设置多久后开始执行(0秒后执行)   <property name="startDelay" value="0" />   // 设置多久循环执行一次(1分钟循环1次)   <property name="repeatInterval" value="60000" /></bean>
// cronTrigger<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">   <property name="jobDetail" ref="exampleJob"/>   <property name="cronExpression" value="0 0 6 * * ?"/></bean>

  4、调度任务Scheduler配置----(SchedulerFactoryBean)

 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
   // 注入工作任务   <property name="jobFactory" ref="jobFactory"/>   // 注入触发器
    <property name="triggers">
      <list>
         <ref bean="simpleTrigger"/>
       </list>
    </property>
 </bean>

附:

  1、quartz 2.2.1 的 Maven 坐标:   

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>    
时间: 2024-11-10 08:48:08

Quartz 任务调度框架整合Spring使用的相关文章

quartz任务调度框架与spring整合

Quartz是什么? Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成 - 从最小的独立的应用程序到规模最大电子商务系统.Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数 - 作业被定义为标准的Java组件,可以执行几乎任何东西,可以编程让它们执行. Quartz调度包括许多企业级功能,如JTA事务和集群支持. 通过触发器结合cron表达式,可以实现丰富的执行策略满足生产需求. maven引入quartz包 <dependen

配置quartz任务调度框架

<properties> <quartz.version>2.2.2</quartz.version> </properties> <dependencyManagement> <dependencies> <!-- quartz任务调度框架 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId&g

j2ee框架整合Spring+spring mvc+mybatis

升级报捷:通过服务于服务之间调用,生成二维码,可直接用户手机app(详细查看截图) 框架集成lucene搜索引擎,使您的信息在毫秒内抓取(详细查看截图) 1.  创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2.  高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等 3. 通过A系统调用B系统的Rest服务,生成相关的二维码,可以直接用户手机app 源码地址获取 ---------------

框架整合——Spring与MyBatis框架整合

Spring整合MyBatis 1. 整合 Spring [整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务] 1). 加入 Spring 的 jar 包和配置文件 <1>.Spring框架需要的jar包: com.springsource.net.sf.cglib-2.2.0.jarcom.springsource.org.aopalliance-1.0.0.jarcom.springsource.org.aspect

Quartz任务调度框架使用

一.什么是Quartz Quartz是一个完全由java编写的开源作业调度框架.不要让作业调度这个术语吓着你.尽管Quartz框架整合了许多额外功能, 但就其简易形式看,你会发现它易用得简直让人受不了! 下载官网:http://www.quartz-scheduler.org/ 可以在maven项目中导入对应的坐标 二.Quartz快速入门 建立一个maven项目 导入Quartz的maven坐标 其中官网中提供了一下案例可以参考一下 网站:http://www.quartz-scheduler

SpringBoot 1.5.x 集成 Quartz 任务调度框架

Quartz 有分 内存方式 和 数据库方式 内存方式任务信息保存在内存中, 停机会丢失, 需手动重新执行, 数据库方式: 任务信息保存在数据库中, 重点是支持集群. 内存方式 RAMJobStore 和 数据库方式 JobStoreTX, RAMJobStore 适合单机, 不支持集群,  JobStoreTX 支持集群. 下面介绍的就是 JobStoreTX 数据库方式. 1. 添加主要的相关依赖, 其他依赖这里就不说了 <dependency> <groupId>org.qu

Quartz任务调度框架

Quartz使用总结 教程

Quartz任务调度框架的简单应用

首先创建Maven项目并添加依赖 1 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> 2 <dependency> 3 <groupId>org.quartz-scheduler</groupId> 4 <artifactId>quartz</artifactId> 5 <version>2.2.3</version>

spring quartz 任务调度

Quartz是一个强大的企业级任务调度框架,spring 提供了对quartz的整合,下面来说一下具体的步骤: 1,俗话说"工欲善其事,必先利其器",首先要把quartz的包导入项目中,以下是maven项目的依赖包: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6&