定时任务 - 任务调度

定时任务
在指定时间,程序自动完成某些功能
定时任务实现方式:
jdk自带的java.util.Timer类,只能按照某一频率执行,每隔多久执行一次,与前端的定时器一样

第三方框架: Quertz,以让你的程序在指定的时间执行,也可以按照某一个频率执行,但是配置起来比较复杂.

Spring提供简化版Quertz, Spring3.0以后自带的task

XXLJOB分布式任务调度 https://www.xuxueli.com/xxl-job/           适用于分布式系统

Quertz实现定时任务核心概念
·工作(Job):用于定义具体执行的工作1
·工作明细(JobDetail):用于描述定时工作相关的信息2
·触发器(Trigger)∶用于描述了工作明细与调度器的对应关系3
·调度器(Scheduler):用于描述触发工作的执行规则,通常使用cron表达式定义规则4

1编写 234配置

定时任务 - 任务调度_第1张图片

2.创建Job类 这个类必须继承QuartzJobBean类

定时任务 - 任务调度_第2张图片

 3..配置

定时任务 - 任务调度_第3张图片

定时任务 - 任务调度_第4张图片

定时任务 - 任务调度_第5张图片

定时任务 - 任务调度_第6张图片

corn表达式

Cron表达式至少有6个(也可以是7个)由空格分隔的时间元素组成.第7个元素可选的,从左至右,这些元素的定义如下表:

定时任务 - 任务调度_第7张图片

- : 范围

* : 任意

/ : 每隔多久或者说开始值/间隔  5/5-> 从第5秒开始,每隔5秒执行一次

, : 表示列表:分钟:5,8,11,22

?: 只在天与星期出现,表示忽略,天与星期必须有一个写?如果设置天,星期必须是?如果设置星期,天必须是?

L : 最后,在天,表示月的最后一天,在星期中,表示月的最后一个星期,第四个星期

# : 只在星期出现星期几#第几个星期6#3:6:表示星期五3:这个月的第3个星期

每隔十秒执行一次

Quatrz:缺点就是配置有点麻烦

第二种 Spring3.0提供的task任务调度

注意前面一种和现在这种二选一

定时任务 - 任务调度_第8张图片

简化:不需要进行配置。只需要在配置类启动任务调度  EnableScheduling

 job类不需要实现任何接口,继承任何类,就是一个普通类,每一个要执行的任务,就是一个方法。只需要在任务方法添加注解

定时任务 - 任务调度_第9张图片

定时任务 - 任务调度_第10张图片

定时任务:执行任务,底层是使用线程调用任务方法

定时任务 - 任务调度_第11张图片

定时任务 - 任务调度_第12张图片

定时任务 - 任务调度_第13张图片

练习:
使用定时任务,实现定时对user表进行备份
备份表: tb_userback    实现全量备份: 思路 -> tb_userback 全部删除,把tb_user的数据全部保存到备份表  

搞一个按钮  : 点击进行备份

实现效果,在之前的springboot项目中实现

create table tb_userbk as select * from tb_userinfo where 1 =2;  //创建备份表

使用定时任务,实现定时对tb_userinfo表进行备份
备份表: tb_userback 实现全量备份: 思路 -> tb_userback 全部删除,把tb_user的数据全部保存到备份表  (每隔10秒)  使用Spring3.0提供的task任务调度来实现 

vue基础

你可能感兴趣的:(springboot,java)