定时任务
在指定时间,程序自动完成某些功能
定时任务实现方式:
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配置
2.创建Job类 这个类必须继承QuartzJobBean类
3..配置
corn表达式
Cron表达式至少有6个(也可以是7个)由空格分隔的时间元素组成.第7个元素可选的,从左至右,这些元素的定义如下表:
- : 范围
* : 任意
/ : 每隔多久或者说开始值/间隔 5/5-> 从第5秒开始,每隔5秒执行一次
, : 表示列表:分钟:5,8,11,22
?: 只在天与星期出现,表示忽略,天与星期必须有一个写?如果设置天,星期必须是?如果设置星期,天必须是?
L : 最后,在天,表示月的最后一天,在星期中,表示月的最后一个星期,第四个星期
# : 只在星期出现星期几#第几个星期6#3:6:表示星期五3:这个月的第3个星期
每隔十秒执行一次
Quatrz:缺点就是配置有点麻烦
第二种 Spring3.0提供的task任务调度
注意前面一种和现在这种二选一
简化:不需要进行配置。只需要在配置类启动任务调度 EnableScheduling
job类不需要实现任何接口,继承任何类,就是一个普通类,每一个要执行的任务,就是一个方法。只需要在任务方法添加注解
定时任务:执行任务,底层是使用线程调用任务方法
练习:
使用定时任务,实现定时对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任务调度来实现