Spring Task 快速入门

举报
追zhui 发表于 2024/10/26 15:02:13 2024/10/26
【摘要】 ​ ​编辑 哈喽~大家好,这篇来看看Spring Task 快速入门。 🥇个人主页:个人主页​​​​​                       🥈 系列专栏:【日常学习上的分享】🥉与这篇相关的文章:                       Redis快速入门及在Java中使用RedisRedis快速入门及在Java中使用Redis_程序猿追的博客-CSDN博客为什么不推荐使用L...

 编辑


 哈喽~大家好,这篇来看看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

2、应用场景有哪些?

二、cron表达式

1、什么是cron表达式?

2、通配符

3、常见的一些cron表达式案例

三、在Java中快速使用

1、自定义定时任务类



一、前言

1、什么是Spring Task

Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。

2、应用场景有哪些?

文:作用是什么?

答:定时自动执行某段Java代码。

问:为什么要在Java程序中使用Spring Task?它的应用场景有哪些?

  1. 信用卡每月还款提醒
  2. 银行贷款每月还款提醒
  3. 火车票售票系统处理未支付订单
  4. 入职纪念日为用户发送通知

在需要定时处理的场景都可以使用Spring Task。

二、cron表达式

1、什么是cron表达式?

cron表达式其实就是一个字符串,通过cron表达式可以定义任务触发的时间

构成规则:分为6或7个域,由空格分隔开,每个域代表一个含义

每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)

举个例子:2022年10月12日上午9点整 对应的cron表达式为:0 0 9 12 10 ? 2022

编辑

注意:一般的值不同时设置,其中一个设置,另一个用?表示(周与日不能同时设置,他们俩必须有一个为问号)。

为了描述这些信息,提供一些特殊的字符。这些具体的细节,我们就不用自己去手写,因为这个cron表达式,它其实有在线生成器。

在线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());
    }
}

启动服务,查看日志

编辑



不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

编辑



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。