Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于Java实现。下面讲解Spring和Quart整合流程:

1.导入依赖

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.6.RELEASE</version></dependency><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><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.1.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.1.6.RELEASE</version></dependency>
</dependencies>

2.创建任务类

public class HelloWorldJob implements Job {private static int count=1;@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {ApplicationContext applicationContext=(ApplicationContext)context.getJobDetail().getJobDataMap().get("applicationContext");System.out.println("获取到的容器是:"+(count++)+"|"+applicationContext);Student student = (Student) applicationContext.getBean("s");System.out.println(student);System.out.println("Welcome to Spring_Quartz World!"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}
}

3.配置文件spring_quartz.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><bean id="s" class="com.bruce.bean.Student"><property name="id" value="1"/><property name="name" value="bruce"/></bean><!-- Spring整合Quartz进行配置遵循下面的步骤: 1:定义工作任务的Job 2:定义触发器Trigger,并将触发器与工作任务绑定 3:定义调度器,并将Trigger注册到Scheduler --><!-- 1:定义任务的bean ,这里使用JobDetailFactoryBean,也可以使用MethodInvokingJobDetailFactoryBean ,配置类似 --><bean name="spring_hello_job"class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><!-- 指定job的名称 --><property name="name" value="spring_hello_job" /><!-- 指定job的分组 --><property name="group" value="spring_hello_group" /><!-- 指定具体的job类 --><property name="jobClass" value="com.bruce.job.HelloWorldJob" /><!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中会删除该任务 --><property name="durability" value="true" /><!-- 指定spring容器的key,如果不设定在job中的jobmap中是获取不到spring容器的 --><property name="applicationContextJobDataKey" value="applicationContext" /></bean><!-- 2.1:定义触发器的bean,定义一个Simple的Trigger,一个触发器只能和一个任务进行绑定 --><bean name="simpleTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><!-- 指定Trigger的名称 --><property name="name" value="hello_trigger" /><!--指定Trigger的名称 --><property name="group" value="hello_trigger_group" /><!--指定Tirgger绑定的Job --><property name="jobDetail" ref="spring_hello_job" /><!--指定Trigger的延迟时间 1s后运行 --><property name="startDelay" value="1000" /><!-- 指定Trigger的重复间隔 5s --><property name="repeatInterval" value="5000" /><!--指定Trigger的重复次数 --><property name="repeatCount" value="5" /></bean><!-- 2.2:定义触发器的bean,定义一个Cron的Trigger,一个触发器只能和一个任务进行绑定 --><bean id="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><!-- 指定Trigger的名称 --><property name="name" value="hello_trigger1" /><!-- 指定Trigger的名称 --><property name="group" value="hello_trigger_group1" /><!-- 指定Tirgger绑定的Job --><property name="jobDetail" ref="spring_hello_job" /><!-- 指定Cron 的表达式 ,当前是每隔1s运行一次 --><property name="cronExpression" value="0/1 * * * * ?" /></bean><!-- 3.定义调度器,并将Trigger注册到调度器中 --><bean id="scheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><!--<ref bean="simpleTrigger"/>  --><ref bean="cronTrigger" /></list></property></bean>
</beans>

4.启动容器

public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("spring_quartz.xml");
}

5.小结

使用Quartz框架实现任务调度的核心是创建任务(Job)、触发器(Trigger)和调度器(Scheduler)。
Quartz的两种常用触发器:SimpleTrigger和CronTrigger。
Spring对Quartz的核心组件进行封装,包括JobDetailBean、SimpleTriggerBean、CronTriggerBean、SchedulerFactoryBean,使用可以更高效地实现任务调度。
通过MethodInvokingJobDetailFactoryBean,允许直接由类方法配置成工作任务.

Quartz专题(二)-Spring和Quart整合相关推荐

  1. spring boot 学习(二)spring boot 框架整合 thymeleaf

    spring boot 框架整合 thymeleaf spring boot 的官方文档中建议开发者使用模板引擎,避免使用 JSP.因为若一定要使用 JSP 将无法使用. 注意:本文主要参考学习了大神 ...

  2. Spring学习笔记专题二

    专题二 (1)注解 1,注解的作用:给Java结构添加标记: 2,注解的使用:使用注解一般需要三方面参与: 1,注解类: 2,需要标记的目标类型: 3,用于处理目标类型的处理程序: 3,Retenti ...

  3. Dubbo源码分析-Spring与Dubbo整合原理与源码分析(二)

    Spring与Dubbo整合的整体流程(基于apache-dubbo-2.7.15) 因为dubbo有较多的兼容以前的代码比如@DubboReference 以前就有两个版本@Reference 和@ ...

  4. Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos /(非阿里组件))

    Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos)(非阿里组件) 回溯 Gateway 整合 nacos 方式一(复杂/灵活/常用) 方式 ...

  5. Spring Boot2.x 整合quartz集群

    springboot2.x支持对quartz的自动配置,引入jar <!-- spring boot2.x + quartz --><dependency><groupI ...

  6. Spring和WebSocket整合并建立简单的Web聊天室

    Spring和WebSocket整合并建立简单的Web聊天室 官方主页 Spring WebSocket 一.概述 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. Web ...

  7. kafka maven 依赖_SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  8. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  9. spring和hibernate整合的几种方式详细介绍

    Spring与Hibernate整合 Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建: 2) hibernate事务交给s ...

最新文章

  1. 修正memcache.php中的错误示例
  2. python服务器稳定性,一种基于Python服务器稳定性测试的方法技术
  3. 【Luogu】P3343地震后的幻想乡(对积分概率进行DP)
  4. ZZULIOJ 1052:数列求和4
  5. mysql5.7存储过程实例_MySQL 存储过程简单实例
  6. 镶套iframe 鼠标滚动无效解决办法
  7. Android基于mAppWidget实现手绘地图(一)--简介
  8. 2019年互联网大厂月饼大盘点,最丑的一家竟然是...
  9. 地表温度数据、LST温度数据、地表反照率、NDVI数据、NPP数据、植被覆盖度、土地利用数据
  10. 思源黑体(魅族)、方正兰亭(小米)、冬青黑体(锤子)比较
  11. 100以内的质数(基础算法)
  12. ip自签名ssl证书
  13. 自有服务器网站备案,网站放自己服务器备案
  14. 使用Ubuntu搭建Web服务器
  15. 安卓无线打印服务器,安卓 打印服务器
  16. 自学的matlab怎么找工作,裸辞一年了,你也没找到工作吗?
  17. android_基础_Edittext的setSelection属性
  18. 泰勒公式求极限c语言switch,C语言利用泰勒公式构造求SIN(X),求大触帮看我的代码哪里有问题...
  19. sah服务器怎么修改vim,vim 编辑器(修改/etc/vim/vimrc即可)
  20. Oracle调优之看懂Oracle执行计划

热门文章

  1. 通信模组电源设计问题总结
  2. 关于打开软件提示各种缺少dll问题
  3. DRV8833直流电机驱动板在智能小车的应用
  4. ctf题目php文件上传如何绕过_ctf基本的文件上传与绕过学习
  5. [LBS学习笔记 1]高德数据可视化初体验
  6. qml开发笔记(七):输入元素鼠标输入MouseArea和键盘输入Keys
  7. 网络分流器|10G网络分流器:传统产品与新的挑战
  8. 【虹科案例】高分辨率太赫兹实时成像-TeraCascade 1000
  9. 数据库系统概论 第一章 绪论 知识点总结
  10. HIKVISION - 设备网络搜索软件