哈喽~大家好,这篇来看看Spring Task 快速入门。
🥇个人主页:个人主页
🥈 系列专栏:【日常学习上的分享】
🥉与这篇相关的文章:
Redis快速入门及在Java中使用Redis Redis快速入门及在Java中使用Redis_程序猿追的博客-CSDN博客 为什么不推荐使用Lombok?@Data不香吗? 为什么不推荐使用Lombok?@Data不香吗?-CSDN博客 Mybatis报错: Parameter ‘XXX‘ not found. Available parameters are [arg1, arg0, param1, param2]解决方案及问题原因 Mybatis报错: Parameter ‘XXX‘ not found. Available parameters are [arg1, arg0, param1, param2]解决方案及问题原因-CSDN博客
目录
一、前言
1、什么是Spring Task
Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。
2、应用场景有哪些?
文:作用是什么?
答:定时自动执行某段Java代码。
问:为什么要在Java程序中使用Spring Task?它的应用场景有哪些?
- 信用卡每月还款提醒
- 银行贷款每月还款提醒
- 火车票售票系统处理未支付订单
- 入职纪念日为用户发送通知
在需要定时处理的场景都可以使用Spring Task。
二、cron表达式
1、什么是cron表达式?
cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间
构成规则:分为6或7个域,由空格分隔开,每个域代表一个含义
每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)
举个例子:2022年10月12日上午9点整 对应的cron表达式为:0 0 9 12 10 ? 2022
注意:一般日和周的值不同时设置,其中一个设置,另一个用?表示(周与日不能同时设置,他们俩必须有一个为问号)。
为了描述这些信息,提供一些特殊的字符。这些具体的细节,我们就不用自己去手写,因为这个cron表达式,它其实有在线生成器。
比如我设置个每五秒执行一次,它的格式是:0/5 * * * * ?
2、通配符
* 表示所有值;
? 表示未说明的值,即不关心它为何值;
- 表示一个指定的范围;
, 表示附加一个可能值;
/ 符号前表示开始时间,符号后表示每次递增的值;
3、常见的一些cron表达式案例
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 5-15 * * ? 每天5-15点整点触发
0 0/3 * * * ? 每三分钟触发一次
0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
三、在Java中快速使用
导入maven坐标,其实在我们的spring-boot-starter里面就已经有了
启动类添加注解 @EnableScheduling 开启任务调度
1、自定义定时任务类
创建MyTask类
/**
* 自定义定时任务类
*/
@Component
@Slf4j
public class MyTask {
/**
* 定时任务 每隔5秒触发一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask(){
log.info("定时任务开始执行:{}",new Date());
}
}
启动服务,查看日志
不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!