Spring整合Quartz(任务调度)

在写这篇文章之前我写过一篇Quartz-任务调度这篇文章中的代码全部是使用Quartz API进行配置。

下面我们一起来用Spring进行整合。

首先我门创建一个类,类名还是叫MyJob

public class MyJob {
    public void execute() throws JobExecutionException
    { 
        System.out.println("这里是我们的任务代码"); 
    }
}
//可以看出我的这个类就是一个简简单单的JavaBean,这个类没有别的用处就是专门为我们来执行任务的。
下面我们来配置Spring的配置文件

第一步将我们的MyJob类放入Ioc容器中

<!-- 将我们的 任务类 放入Ioc容器为我们管理 -->
<bean class="MyJob" id="myJob"/>

问:这里为什么要将MyJob放入Ioc容器呢?
答:是因为我们通过Spring来整合我们的项目,所以需要Ioc容器来帮我们管理我们需要的实例,我们用到哪个实例的时候直接从Ioc容器中获取。

第二步创建任务

<!-- 创建任务 -->
<bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" id="jobDetail"> 
   <!-- 目标对象 -->
   <property name="targetObject" ref="myJob"/>
   <!-- 目标方法 -->
   <property name="targetMethod" value="execute"/>
</bean>

问:这里为什么要创建任务呢,不是已经创建了一个任务类(MyJob)了吗?
答:我们创建的任务类(MyJob)只是负责执行我们的任务代码,这个时候Quartz并不知道我们有这个任务,所以要创建任务让Quartz知道我们的MyJob是一个任务。

第三步创建触发器

<!-- 创建SimpleTrigger触发器 -->
<bean class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" id="simpleTrigger"> 
   <!-- 引用任务 --> 
   <property name="jobDetail" ref="jobDetail"/> 
   <!-- 指定循环时间,以秒为单位 --> 
   <property name="repeatInterval" value="5000"/>
   </bean><!-- 创建CronTrigger触发器 -->
   <bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" id="cronTrigger">
   <!-- 引用任务 --> 
   <property name="jobDetail" ref="jobDetail"/> 
   <!-- 指定Cron表达式 --> 
   <property name="cronExpression" value="0/1 * * * * ?"/>
</bean>

问:为什么要创建两个触发器呢?
答:这是为了演示两个触发器配置的不同方法,我们使用CronTrigger触发器比较多,因为它比SimpleTrigger触发器更为灵活(控制触发时间的灵活)。

这里需要注意,我们通过Quartz API配置的时候,是创建了调度器之后,使用调度器的 scheduleJob() 方法来将任务和触发器绑定到一起。而在Spring的配置文件中,是在创建了触发器之后就要和任务绑定。

第四步创建调度器

<!-- 创建调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" id="stdScheduler">
   <property name="triggers">
      <list> 
         <ref bean="cronTrigger"/>
      </list>
   </property>
</bean>

这里可以看出,调度器之创建一次就可以,只需要将我们的触发器全部放入调度器中。

将以上四步放到一个配置文件中的栗子

<!-- 将我们的 任务类 放入Ioc容器为我们管理 -->
<bean class="MyJob" id="myJob"/>
<!-- 创建任务 -->
<bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" id="jobDetail"> 
   <property name="targetObject" ref="myJob"/> 
   <property name="targetMethod" value="execute"/>
</bean>

<!-- 创建SimpleTrigger触发器 -->
<bean class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" id="simpleTrigger"> 
   <property name="jobDetail" ref="jobDetail"/>
   <property name="repeatInterval" value="5000"/>
</bean>

<!-- 创建CronTrigger触发器 -->
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" id="cronTrigger">
   <property name="jobDetail" ref="jobDetail"/>
   <property name="cronExpression" value="0/1 * * * * ?"/>
</bean>

<!-- 创建调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" id="stdScheduler"> 
   <property name="triggers"> 
      <list> 
         <ref bean="cronTrigger"/> 
      </list> 
   </property>
</bean>

注意:我使用的Spring版本为 4.3.3,Quartz版本为2.2.3。如果你使用的这两个版本不兼容,可能会出现一些错误。因为Quartz2.2.3与1.8.6创建任务和触发器的方式发生了变化,所以如果你的Spring版本较高请更换合适的Quartz版本。

配图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 《分布式任务调度平台XXL-JOB》 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心...
    许雪里阅读 16,758评论 3 29
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,713评论 6 342
  • 这本小说的作者是居住在美国的华裔,不知道是不是华裔的骨子里面都有潜在的自卑感,因此特别渴望“成功”或者借由子...
    笔尖上的王者阅读 149评论 0 0
  • 笑脸如花,满街欢声 身旁,阳光,我在闹,你在笑 有你有我 尘起尘落,星辰满天 闭眼,雨天,轮廓清晰,笑脸袭来 有我...
    遇见方知有你阅读 320评论 2 7