本案例使用IDEA创建的maven的web项目。
任务调度三要素:任务类、触发器、调度器


步骤一:在pom.xml文件中导入依赖

 <!--声明springboot版本--><parent><!--注意该标签不在<dependencies>--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.5.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><!-- mvc,aop的依赖包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 由于我们在上面指定了parent,这里就不需要指定版本号 --></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!--tomcat--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version></dependency><!-- 阿里巴巴的Druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency><!--pageHelper分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.0.0</version></dependency><!--quartz依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.3</version></dependency></dependencies>

步骤二:在resources下创建application.yml配置数据库信息

#application.yml文件对格式要求很严,下面每一个空格都要对齐。application.yml用于读取定义sql语句的文件和配置数据库信息
spring:datasource:name: dataSourcetype: com.alibaba.druid.pool.DruidDataSource#druid相关配置,数据库配置druid:#监控统计拦截的filtersfilters: statdriver-class-name: com.mysql.jdbc.Driver#基本属性url: jdbc:mysql://localhost:3306/day06username: rootpassword: root#配置初始化大小/最小/最大initial-size: 1min-idle: 1max-active: 20#获取连接等待超时时间max-wait: 60000#间隔多久进行一次检测,检测需要关闭的空闲连接time-between-eviction-runs-millis: 60000#一个连接在池中最小生存的时间min-evictable-idle-time-millis: 300000#配置mabatis文件,扫描定义sql语句的文件,即扫描mapper下的所有xml文件
mybatis:mapper-locations: classpath:mapper/*.xml#这是给包起别名的#type-aliases-package: com.qf.bean

步骤三:创建任务类

将该类命名为:QuartzJob

package com.qf.util;import org.springframework.stereotype.Component;import java.util.Date;@Component//Component给当前类创建对象,为了让它们自动调用,自动执行(这就叫自动装配?)。
// 这就是为什么之用运行执行类,关联类就能自动执行的原因。我们写完对象创建的注解,底层自动执行
public class QuartzJob {
public void  abc(){System.out.println("任务aa:"+new Date());
}
}

步骤四:创建配置工具类,用于创建任务类、触发器、调度器

该案例将该类命名为:QuartzConfig
注意:mijd、triggerFactoryBean这两个参数爆红不影响运行

package com.qf.util;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;//配置quartz的工具类
@Configuration
public class QuartzConfig {//1、创建任务类。固定用法。告诉quartz框架去执行哪个任务@Bean//Bean将component创建的类对象进行注入。就如同@Resources给属性注入一样public MethodInvokingJobDetailFactoryBean  a1(QuartzJob job){MethodInvokingJobDetailFactoryBean factoryBean=new MethodInvokingJobDetailFactoryBean();factoryBean.setTargetObject(job);//QuartzJob是包含要执行任务的类factoryBean.setTargetMethod("abc");//abc代表包含要执行任务的方法名。//此处调成了setStaticMethod()方法花了一小时找错。return factoryBean;}//2、创建触发器。告诉quartz框架多久执行一次任务@Beanpublic CronTriggerFactoryBean b1(MethodInvokingJobDetailFactoryBean mijd){//返回一个CronTriggerFactoryBean对象CronTriggerFactoryBean factoryBean = new CronTriggerFactoryBean();factoryBean.setJobDetail(mijd.getObject());factoryBean.setCronExpression("0/5 * * * * ?");return factoryBean;}//3、创建调度器。告诉quartz框架返回什么对象@Bean//public SchedulerFactoryBean c1(CronTriggerFactoryBean triggerFactoryBean){SchedulerFactoryBean factoryBean=new SchedulerFactoryBean();factoryBean.setTriggers(triggerFactoryBean.getObject());return factoryBean;}
}


本案例框架结构图:




本案例运行结果:

springboot实现任务调度的第三种方式------使用第三方quartz插件调度(springBoot+quartz+cronTrigger进行任务调度)相关推荐

  1. SpringBoot静态获取 bean的三种方式,你学会了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 ...

  2. Springboot实现登录拦截的三种方式

    文章目录 1. 登录认证 1.1 介绍 1.2 方式 1.3 扩展 2. 实现 2.1 项目结构以及前置准备 2.2 过滤器实现登录拦截 2.3 拦截器实现登录拦截 2.4 AOP+自定义注解实现 2 ...

  3. springboot+mybatis实现数据分页(三种方式)

    项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...

  4. Springboot单元测试mysql_Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写 ...

  5. 【小家Spring】SpringBoot中使用Servlet、Filter、Listener三大组件的三种方式以及原理剖析

    每篇一句 要么就安逸的穷,要么就拼命的干 前提概要 web开发使用Controller基本能解决大部分的需求,但是有时候我们也需要使用Servlet,因为相对于拦截和监听来说,有时候原生的还是比较好用 ...

  6. springboot 多数据源配置的几种方式

    springboot多数据源配置的三种方式 application.yml配置 1.@Ds("配置数据源名称") 引入依赖 <dependency> <group ...

  7. SpringBoot实现定时任务的三种方式

    第一种我们可以使用java原生提供的api去实现一个定时任务 利用Timer这个api,去实现定时任务,用Timertask去创建一个任务 public class javaJob {public s ...

  8. SpringBoot三种方式实现定时任务

    SpringBoot三种方式实现定时任务 定时任务实现的三种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用 ...

  9. 【Linux】部署Springboot项目到Linux服务器以及linux服务器下载文件的三种方式详解

    Linux学习之路 初识Linux Linux内核 由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写 Linux 是一套免费使用和自由传播的类Unix操作系 ...

  10. springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】

    0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...

最新文章

  1. 女程序员婚前买房给父母住,婚后要求男程序员一起还房贷!男程序员怀疑婚姻!...
  2. 6. Qt 信号与信号槽 (5)-QObjectPrivate
  3. 如何解包/编辑/打包boot.img文件
  4. python全排列_全排列算法python实现
  5. CF1251F-Red-White Fence【NTT】
  6. 电力电子、电机控制系统的建模和仿真_清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...
  7. java给腾讯通发消息_通过web 向rtx发送通知消息
  8. 李沐老师的《动手学深度学习PyTorch》中的d2lzh_python包的安装
  9. 云服务器运行gpu程序很卡,请问怎样才使程序在GPU上运行?
  10. QCon全球软件开发大会:推动创新,实现技术落地
  11. 计算机取证之你必须要会用的24款工具
  12. 有Excel、Tableau、PowerBI都能做数据分析,为什么还要用Python
  13. quartus ii
  14. 【Matlab-NURBS工具箱简要教程及实例 】
  15. Unity ParticleSystem 之 简单的电子自旋 Electrons ParticleSystem 粒子特效
  16. 什么是外包?定义、最佳实践、挑战和建议
  17. (13)TranslateMessage函数
  18. java教程_java学习的秘籍
  19. 分享——网页上的虚拟机
  20. C# 打印预览 PrintDocument打印、打印预览

热门文章

  1. JAVA项目管理ppt_【干货】超实用项目管理ppt项目管理ppt
  2. 项目开发文档编写规范
  3. 智慧树知到python程序设计基础第三章答案_知到智慧树Python程序设计基础章节答案...
  4. 软件开发报价计算方式
  5. 立创开源 | 基于lm393的模数温度传感器
  6. oracle 百分位数,oracle分析函数 percent_rank, percentile_cont, percentile_disc
  7. 软考网络工程师第一章复习
  8. 分享修改Wke源代码后重新封装成Duilib控件的代码
  9. OptiSystem:光纤陀螺仿真-Open-Loop IFOG-Matlab联合仿真
  10. 全新UI西游H5决战天宫游戏详细图文架设教程