springboot+Quartz整合!!!简单实用
一、什么是Quartz
在Quartz官网上是这么写的 Quartz官网
1、Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
2、Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。
3、Quartz 允许程序开发人员根据时间的间隔来调度作业。
4、Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。
二、Quartz核心概念
1、Job 表示一个工作,要执行的具体内容。
2、JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。
3、Trigger 代表一个调度参数的配置,什么时候去调。
4、Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。
三、在pom.xml文件中 导入Quartz依赖包
代码如下 也可自行去maven仓库中下载 输入Quartz maven仓库
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version></dependency><!-- 该依赖必加,里面有sping对schedule的支持 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency>
四、Quartz配置
第一步 首先创建job工厂并注入spring Ioc容器
@Component
public class MyAdaptableJobFactory extends AdaptableJobFactory {//AutowireCapableBeanFactory 可以将一个对象添加到SpringIOC容器中,并且完成该对象注入@Autowiredprivate AutowireCapableBeanFactory autowireCapableBeanFactory;/*** 该方法需要将实例化的任务对象手动的添加到springIOC容器中并且完成对象的注入*/@Overrideprotected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {Object obj = super.createJobInstance(bundle);//将obj对象添加Spring IOC容器中,并完成注入this.autowireCapableBeanFactory.autowireBean(obj);return obj;}}
第二步 创建自己的工作类
public class JobTest implements Job {@Overridepublic void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println("测试quartz Job定时任务!!");}
}
第三步 Quartz配置类
@Configuration
public class QuartzConfig {/*** 1.创建Job对象*/@Beanpublic JobDetailFactoryBean jobDetailFactoryBean() {JobDetailFactoryBean factory = new JobDetailFactoryBean();//关联我们自己的Job类factory.setJobClass(JobTest.class);return factory;}/*** 2.创建Trigger对象* 简单的Trigger*//*** Cron Trigger*/@Beanpublic CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {CronTriggerFactoryBean factory = new CronTriggerFactoryBean();factory.setJobDetail(jobDetailFactoryBean.getObject());//这里涉及到Cron表达式 可以去看我写的Cron表达式详解博客!!! 此处代表每10秒钟 调用一次factory.setCronExpression("0/10 * * * * ?");return factory;}/*** 3.创建Scheduler对象*/@Beanpublic SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean, MyAdaptableJobFactory myAdaptableJobFactory) {SchedulerFactoryBean factory = new SchedulerFactoryBean();//关联triggerfactory.setTriggers(cronTriggerFactoryBean.getObject());factory.setJobFactory(myAdaptableJobFactory);return factory;}}
总结一下 在Quartz配置类中
1、首先去创建job可执行的调度程序,并让调度程序关联具体的执行内容
2、为调度程序设置trigger(什么时候去调用),关联jobDetail,简单一点来说就是 什么任务什么时候执行
3、创建调度器 scheduler,并关联trigger、自定义任务工厂MyAdaptableJobFactory
测试
这就是springboot+quartz定时任务整合啦!!下面有还有整合quartz多任务 cron表达式详解
SpringBoot+Quartz实现多个定时任务 方法与我在Quartz中使用的JobDetailFactoryBean有些不同
cron表达式详解
springboot+Quartz整合!!!简单实用相关推荐
- 在springBoot与quartz 整合中 @Transaction 失效
问题1::springBoot在与quartz 整合时,使用@Transaction 注解时事务失效 解决方案:创建一个类使用@component被spring管理 ,使用@Transaction标识 ...
- springboot中整合mybatis及简单使用
springboot中整合mybatis及简单使用 1.引入依赖 2.在applicaiton.yaml中配置数据源以及mybatis 3.创建sql测试表 4.编写mapper接口和mapper.x ...
- SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调度.系统的监控处理,实际上这些操 作都可以通过 SpringBoot 进行整合操作.2.1.SpringBoot 整合邮件服 ...
- SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...
- springboot quartz 动态配置_springboot集成quartz实现动态任务调度
quartz是一个开源的作业调度框架,本文就是介绍下springboot框架下继承quartz的一些使用示例 首先我们需要添加quartz的spring-boot-starter-quartz依赖 o ...
- SpringBoot项目整合Retrofit最佳实践,这才是最优雅的HTTP客户端工具!
作者:六点半起床 juejin.im/post/6854573211426750472 大家都知道okhttp是一款由square公司开源的java版本http客户端工具.实际上,square公司还开 ...
- SpringBoot 2 整合 Spring Session 最简操作
SpringBoot 2 整合 SpringSession 前言 Spring Session 介绍 SpringBoot 快速整合 Spring Session Spring Session 测试 ...
- Eclipse 工具上Springboot项目的简单 增删改查 的搭建
目录 一.为嘛子要学习Springboot 二.简单的说下springboot 三.咱们对比看看呗 四.开始操作,建项目 1.建一个maven项目 2.pom.xml 依赖 以及 配置文件 ①简单的依 ...
- SpringBoot RabbitMQ 整合使用
转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/01/26/SpringBoot-RabbitMQ/ 关注我 前提 上次写了篇文章,<SpringB ...
最新文章
- 类名.class的含义。
- iptables详解--转
- easyui required 提交验证
- JavaScript教程——JavaScript 的基本语法(标识符)
- FileSystemResource 和ClassPathResource 有何区别?
- Spring MVC测试框架入门–第2部分
- Linux时间函数札记
- Mysql 零距离-入门(二)
- 福晶科技与九章量子计算机,量子计算机“九章”横空出世,还要光刻机吗?12月3日,中国量子计算机“九章”横空...
- linux开发板命令rx,linux 常用命令汇总
- 服务器远程桌面日志,记录远程桌面连接登录日志的方法及注意事项
- adc0808模数转换实验报告_ADC0808模数转换显示 单片机程序
- linux 录制视频mp4,Kazam下载使用:优秀的Linux截图与屏幕视频录制软件
- null object java_java1.8--Null Object模式
- 著名互联网公司薪酬最全分析!
- 关于烂代码的那些事(下)
- scrapy的spider中为什么使用yield
- SpringMvc思维导图
- 将正确的ADC与应用程序匹配
- 如何退出Vi或Vim编辑器