Springboot定时任务、Quartz表达式
一、操作
第一步:在启动类上加注解@EnableScheduling注解来开启定时任务。
第二步:编写定时方法
我们了解到在主入口类,添加 @EnableScheduling 注解后, Component注解过的类的方法上,使用 @Scheduled 方法就可以实现定时任务
@Component
@Slf4j
public class MyTask {//@Scheduled(fixedDelay = )每个任务结束,等待指定时间再次执行//@Scheduled注解,注解的参数可以配置时间@Scheduled(fixedDelay=5*1000) // 每五秒执行一次此方法public void testTaskFirst(){log.info("定时任务一:每五秒执行一次,当前时间:"+ LocalTime.now());}}
SpringBoot 提供了除 fixedRate 属性之外更强大的 属性 Cron
@Component
@Slf4j
public class MyTask {//@EnableScheduling注解该类为定时任务//@Scheduled(corn = "") 每个任务结束,等待指定时间再次执行@Scheduled(cron = "0/1 * * * * ?") // 每过1秒执行此方法public void testTaskTwo(){log.info("定时任务:"+ LocalTime.now());}
}
Quartz 任务调度表达式语法
Quartz cron表达式支持七个域:
名称 是否必须 允许值 特殊字符
秒 是 0-59 , - * /
分 是 0-59 , - * /
时 是 0-23 , - * /
日 是 1-31 , - * ? / L W C
月 是 1-12 或 JAN-DEC , - * /
周 是 1-7 或 SUN-SAT(从周日开始,1是周日,7是周六) , - * ? / L C #
年 否(可以省略) 空 或 1970-2099
注意:
日与周,必须有一个是问号。否则就会有冲突。
月份和星期的名称是不区分大小写的。FRI 和 fri 是一样的。
举例:
表达式意义
“0 0 12 * * ?” 每天中午12点触发
“0 15 10 ? * *” 每天上午10:15触发
“0 15 10 * * ?” 每天上午10:15触发
“0 15 10 * * ? *” 每天上午10:15触发
“0 15 10 * * ? 2005” 2005年的每天上午10:15触发
“0 * 14 * *?” 在每天下午2点到下午2:59期间的每1分钟触发
“0 0/5 14 * *?” 在每天下午2点到下午2:55期间的每5分钟触发
“0 0/5 14,18 ** ?” 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
“0 0-5 14 * *?” 在每天下午2点到下午2:05期间的每1分钟触发
“0 10,44 14 ? 3WED” 每年三月的星期三的下午2:10和2:44触发
“0 15 10 ? *MON-FRI” 周一至周五的上午10:15触发
“0 15 10 15 *?” 每月15日上午10:15触发
“0 15 10 L * ?” 每月最后一日的上午10:15触发
“0 15 10 ? * 6L” 每月的最后一个星期五上午10:15触发
“0 15 10 ? * 6L2002-2005” 2002年至2005年的每月的最后一个星期五上午10:15触发
“0 15 10 ? *6#3” 每月的第三个星期五上午10:15触发
扩展:
当quartz和rabbitMQ连用的时候(定时发送邮件),我们得注意:在消息提供方,的定时配置文件起名一定要与其他的不同,再在springmvc里面去导入,防止servlet和listener加载顺序(先监听再s)产生的控制针异常。
二、注意事项
2.1 @Scheduled注释不能与@Transaction注释一起使用
不能共存在一个类中起作用
解决:拆分成两个类
@Service
public class UserServiceImpl implements UserService { @Override @Transactional public void doSomething() { }
} @Service
public class UserServiceScheduler { @Inject private UserService service; @Scheduled(fixedRateString = "${somestring}",initialDelayString = "${anotherstring}") public void doSomething() { service.doSomething(); }
}
Springboot定时任务、Quartz表达式相关推荐
- spring中轻松实现定时任务,quartz表达式的在线Cron表达式生成器推荐
东西虽简单,保留下来,开箱即用,省时省力!!!!! 1.首先在pom.xml中引入quartz相关包 <dependency> <groupId>o ...
- SpringBoot 定时任务cron表达式详解
cron表达式 顺序 秒 分钟 小时 日期 月份 星期 年(可选) 取值 0-59 0-59 0-23 1-30(31) 1-12 1-7允许特殊字符 , - * / , - * / , - * / ...
- Spring Boot定时任务-SpringBoot整合Quartz
如何通过SpringBoot整合Quartz框架,我们首先去创建一个项目,接下来我们需要在pom文件里添加坐标,我们在使用SpringBoot整合Quartz的时候,需要添加哪些坐标呢,我们来看一下, ...
- springboot和quartz整合实现动态定时任务(持久化单节点)
Quartz是一个完全由java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制,它支持定时任务持久化到数据库,从而避免了重启服务器时任务丢失,支持分布式多节点,大大的 ...
- java quartz 动态执行,浅谈SpringBoot集成Quartz动态定时任务
SpringBoot自带schedule 沿用的springboot少xml配置的优良传统,本身支持表达式等多种定时任务 注意在程序启动的时候加上@EnableScheduling @Schedule ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- SpringBoot结合Quartz实现定时任务
<从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...
- Springboot集成quartz定时任务可视化配置
转自我的个人博客:Springboot集成quartz定时任务可视化配置 使用quartz定时任务已经有一段时间了,今天记录一下Springboot 2.x集成Quartz. 1.引入quartz j ...
- springboot整合quartz,实现数据库方式执行定时任务
springboot整合quartz,实现数据库方式执行定时任务.把定时任务信息存进数据库,项目启动后自动执行定时任务. 1.引入依赖包: <dependency><groupId& ...
- SpringBoot整合Quartz执行持久化定时任务
使用: 个人博客项目,定时刷新帖子排名用到了定时任务,在这里记录下来SpringBoot整合Quartz的基本使用,记录的同时也希望能帮助到大家. 1.什么是Quartz 官方介绍: Quartz是一 ...
最新文章
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)
- 比特币的闪电网络正在创建自己的黑客阵营
- c++ const 常指针
- redis 2m数据读取_Flink读写Redis(二)读取redis数据
- linux备份日志文件脚本,Linux篇:Shell脚本实现Gitlab双备份
- sql 孩子兄弟表示法 所有子节点_matlab实现随机+蓄意攻击网络节点(1)
- Sun公司开源游戏服务器Project Darkstar Server——(Sun game server , 简称 sgs)学习笔记(二):多人游戏...
- 剑指Offer替换空格问题
- 从面试题中看Java的Reference(引用)
- system()函数
- matlab 关闭mdl,双击m文件和mdl文件重新打开一个matlab主程序
- servlet原理+流程图+简单实现案例(javaweb)
- uni-app 动态获取元素wight/height/left/right/top/bottom/id
- laravel开源版华登区块狗
- 6-3 计算Fibonacci数列每一项时所需的递归调用次数 (10 分)
- string find的用法详解
- Cesium本地加载地形(dem高程)数据
- 本周大新闻|Meta AI部门重大重组,疑似Cambira CAD图曝光
- kali双系统安装(超详细)
- 头部和四肢血量间相互流动速率系数的确定(含python代码)
热门文章
- 封装解决WebView的那些坑
- 2021年T电梯修理免费试题及T电梯修理试题及解析
- go-sqlite3 “database is locked”问题解决方案
- 注册表删除windows开机启动项
- python识别图像里文字_使用 Python 识别并提取图像中的文字
- 一个有意思的VMP破解 旺旺吧上网经营管理系统 破解
- java application.doevents_Application.DoEvents的用法
- 基于微信小程序的毕业设计题目(33)PHP校园失物招领小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
- python统计中文字数_使用Python计算.pdf文档中的总字数
- 华为耗资100亿元的研发基地着火了?