然后创建QuartzConfig,接着定义JobDetail,JobDetail由JobBuilder构建,同时关联了任务QuartzJob1。

@Configuration

public class QuartzConfig {

@Bean

public JobDetail jobDetail1(){

return JobBuilder.newJob(QuartzJob1.class).storeDurably().build();

}

}

最后我们需要定义定时调度Trigger,简单实现类SimpleScheduleBuilder用于构建Scheduler,TriggerBuilder则用于构建Trigger。

@Configuration

public class QuartzConfig {

@Bean

public JobDetail jobDetail1(){

return JobBuilder.newJob(QuartzJob1.class).storeDurably().build();

}

@Bean

public Trigger trigger1(){

SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()

.withIntervalInSeconds(1) //每一秒执行一次

.repeatForever(); //永久重复,

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

一直执行下去

return TriggerBuilder.newTrigger()

.forJob(jobDetail1())

.withSchedule(scheduleBuilder)

.build();

}

}

这样一个Quartz定时任务就配置完成了。

其实Job的定义也可以使用内部类,这样可以省去Job类的创建,例如下面定时任务2 jobDetail2和trigger2。

@Bean

public JobDetail jobDetail2(){

QuartzJobBean quartzJob2 = new QuartzJobBean() {

@Override

protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {

SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

System.out.println(“内部类quartzJob2----” sdf.format(new Date()));

}

};

return JobBuilder.newJob(quartzJob2.getClass()).storeDurably().build();

}

@Bean

public Trigger trigger2(){

//JobDetail的bean注入不能省略

//JobDetail jobDetail3 = JobBuilder.newJob(QuartzJob2.class).storeDurably().build();

SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()

.withIntervalInSeconds(2) //每2秒执行一次

.repeatForever(); //永久重复,一直执行下去

return TriggerBuilder.newTrigger()

.forJob(jobDetail2())

.withSchedule(scheduleBuilder).build();

}

启动程序,我们就可以看到控制台的时间输出了。

同时Quartz是支持数据持久化的,可以将定时调度信息持久化到数据库。

选择持久化到数据库,我们需要创建对应的表,建表语句可以在Quartz官网进行下载,解压后在docs\dbTables目录下寻找对应数据库的SQL脚本。

为了方便,我也将该文件放在了项目源码resources里。

操作数据库,我们引入相关的依赖。若有ORM框架,例如mybatis,hibernate或者jpa,则无需再引入jdbc依赖。

mysql

mysql-connector-java

runtime

com.alibaba

druid-spring-boot-starter

1.1.10

org.springframework.boot

spring-boot-starter-jdbc

在application.yml配置文件中,我们对quartz持久化方式进行声明。

server:

port: 10900

spring:

profiles:

active: dev

quartz:

job-store-type: jdbc #持久化到数据库

properties:

org:

quartz:

datasource:

新版驱动从com.mysql.jdbc.Driver变更为com.mysql.cj.jdbc.Driver

driver-class-name: com.mysql.cj.jdbc.Driver

数据源需要添加时间标准和指定编码格式解决乱码 You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

username: root

password: 1234

scheduler:

instancName: clusteredScheduler

instanceId: AUTO

jobStore:

class: org.quartz.impl.jdbcjobstore.JobStoreTX

driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate #StdJDBCDelegate说明支持集群

tablePrefix: QRTZ_

isClustered: true

clusterCheckinInterval: 1000

useProperties: false

threadPool:

class: org.quartz.simpl.SimpleThreadPool

threadCount: 20

threadPriority: 5

这里主要就是job-store-type: jdbc,表示持久化到数据库,然后就是数据源,由于该演示项目没有其他ORM的数据源,所以这里将数据源信息定义在了quartz节点下的datasource节点,如果已经存在,可使用同一个属性配置,当然最关键的是QuartzDataSource声明。

SpringBoot系列:Spring Boot集成定时任务Quartz,java百度云短信发送相关推荐

  1. Java阿里云短信发送工具类

    短信服务API介绍 阿里云短信发送:调用SendSms发送短信_短信服务-阿里云帮助中心 <!--springboot项目阿里云发送短信--> <dependency>< ...

  2. SpringBoot系列:Spring Boot集成定时任务Quartz

    一.关于Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.在java企业级应用中,Q ...

  3. Java 阿里云短信服务的集成

    Java 阿里云短信服务的集成 1.短信发送API(SendSms)---JAVA  [ https://help.aliyun.com/document_detail/55284.html?spm= ...

  4. java阿里云短信服务开通验证码功能实现(1)

    java阿里云短信验证码功能实现篇(一) 最近有朋友咨询java短信验证码,系统注册登录,修改密码时使用,作为小白的我也是第一次搞这个,若有不好之处,忘见谅,废话不多说,我将写两篇文章来说明如何开通短 ...

  5. Tomcat8源码分析系列-spring boot集成tomcat

    前言 本文基于 spring boot 1.5.9 spring boot 支持目前主流的 servlet 容器,包括 tomcat.jetty.undertow,可以在我们的项目中方便地集成这些 s ...

  6. java spring-boot-starter-mail邮件和阿里云华为云短信发送全套

    短信API都是需要对接平台的,平台会提供参考代码比较简单,但是邮件是免费的,除了springboot,还能用javaxmail(我记得是,大家可以查查资料) 文章目录 前言 一.spring-boot ...

  7. java阿里云短信对接

    技术栈: Spring boot 2.x 阿里云短信sdk java版本1.8 注意事项: 本文内的"**.**"需要自己替换为自己的路径. 常量内的"**"需 ...

  8. java阿里云短信实现

    准备工作: 需要获取以上对应的参数: 签名名称 模板CODE AccessKey ID AccessKey Secret 以上四个参数为必要的 接口api文档:SendSms - 发送短信 (aliy ...

  9. 腾讯云短信发送api(SendSms)--java

    一.申请腾讯云帐号并开通短信服务(开通短信服务需要手机实名认证) 1.注册或登录地址:登录 - 腾讯云 2.登录后搜索:短信  3.创建签名,注意,这里的签名内容在代码里面要用到.(提交审核两个小时之 ...

最新文章

  1. STC15分时内核中函数指针的使用问题
  2. 判断数组中某个元素除自身外是否和其他数据不同_布隆过滤器,我也是个处理过 10 亿数据的人...
  3. Express中使用ejs新建项目以及ejs中实现传参、局部视图include、循环列表数据的使用
  4. PAT—— 害死人不偿命的(3n+1)猜想 (1001)
  5. 项目管理 - 学习总目录
  6. Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)
  7. 5.19 - Stacks and Queues
  8. 深入MTK平台bootloader启动分析笔记
  9. C# 使用 Windows 消息队列机制
  10. 手机中如何处理Excel格式转换PDF格式
  11. 第九章 CSS-DOM
  12. 防止撤回插件 Android,微信防撤回插件
  13. android手机恢复出厂设置,手机强制恢复出厂设置方法
  14. android自动画廊,Android3D画廊效果与自动轮播Banner
  15. PS带框的对号怎么打
  16. HDU6438(优先队列+思维)
  17. 免费SSL证书和付费SSL证书的区别在哪儿?
  18. Thingsboard 物联网平台 CoAP 协议介绍
  19. Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
  20. Android内存泄漏检测工具使用手册

热门文章

  1. base64接收图片
  2. 解决微信浏览器video标签自动播放视频失效
  3. 中国移动物联网开放平台OneNET学习笔记(1)——设备接入(MQTT协议)OneNET Studio篇
  4. android 渐变歌词,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
  5. iOS内存分配与五大区域
  6. 如何清除 iPhone 上的其他存储来释放空间
  7. sql 当为空值时置0_SQL查询值为空时默认输出0的方法
  8. 混合个人训练第四十六场(A,B题解) A 数论线代全家桶 (all) B: 看星星 (stars)
  9. poj3253求切割木板开销最少是多少, 赫夫曼编码
  10. View UI (iview)表格合并单元格(行/列合并)