【Spring Boot实战与进阶】定时任务注解@Scheduled的使用

简介: 定时任务注解@Scheduled的使用
Spring Boot是很优秀的框架,它的出现简化了新Spring应用的初始搭建以及开发过程,大大减少了代码量,目前已被大多数企业认可和使用。这个专栏将对Spring Boot框架从浅入深,从实战到进阶,不但我们要懂得如何去使用,还要去剖析框架源码,学习其优秀的设计思想。

汇总目录链接:【Spring Boot实战与进阶】学习目录

1、cron 表达式

格式: [秒] [分] [小时] [日] [月] [周] [年]

key 释义
(0~59)
分钟 (0~59)
小时 (0~23)
(0~31)
(0~11)
星期 (1~7,SUN,MON,TUE,WED,THU,FRI,SAT)
(1970-2099)

2、特殊字符的含义

key 释义
* 代表所有可能得值,在(月)中表示每个月,在(天)中表示一星期的每一天
/ 代表指定数值的增量,0/15在(分钟)中表示从第0分钟开始,每15分钟
? 仅被用于天(月)和天(星期),表示不指定值,当这两个其中之一被指定了值之后,为了避免冲突,需要将另一个表达式的值设定为"?"
L 仅被用于天(月)和天(星期),是单词"Last"的缩写, 在天(月)中表示一个月的最后一天,在天(星期)中表示一个星期的最后一天,也就是周六
- 表示一个范围
, 表示一个列表值

3、举例

key 释义
0 0 6 ? 每天6点触发
0 30 6 ? 每天6点30分触发
0 30 6 ? 2019 2019年每天6点30触发
0 10/15 6 ? 每天6点的 10分,25分,40分,55分这几个时间点执行
0 9 * ? 每天9点到9点59分每分触发
0 0/5 9 ? 每天9点到9点59分(整点开始,每隔5分触发)
0 0/5 9,10 ? 每天9点到10点59分(整点开始,每隔5分触发)
0 0-5 9 ? 每天9点到9点05分每分触发
0 15 8 ? 11 MON-FRI 从周一到周五每天8点15分触发
0 0 18 15 * ? 每月15号18点触发
0 0 18 L * ? 每月最后一天的18点触发
0 30 6 ? * 1 每周星期天,6点30分触发
0 30 6 ? * 6L 每月最后一周的星期五的6点30分触发
0 10 3 ? * 1#3 每个月的第三个星期天触发,#号只能出现在星期的位置
0 14 13 20 5 ? 每年的5月20号 13点14分触发

4、Spring Boot项目中如何使用

  SpringBoot的启动类上添加@EnableScheduling,此注解的作用是发现注解@Scheduled的任务并后台执行。(或者添加在定时任务类上也可以)

@SpringBootApplication
@EnableScheduling
public class BootdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootdemoApplication.class, args);
    }

}

5、ScheduleTask 定时任务测试类

@Component
public class ScheduleTask {

    // 每隔10秒执行一次
    @Scheduled(cron = "0/10 * * * * ?")
    public void print() {
        System.out.println("每隔10秒执行一次:" + new Date());
    }

}

6、控制台输出

在这里插入图片描述

相关文章
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
50 2
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
91 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
3月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
329 6
|
3月前
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
167 2
|
3月前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
168 1
|
3月前
|
Java 调度 开发者
spring的@Scheduled()有几种定时模式?
【10月更文挑战第12天】spring的@Scheduled()有几种定时模式?
133 1
|
3月前
|
存储 Java API
简单两步,Spring Boot 写死的定时任务也能动态设置:技术干货分享
【10月更文挑战第4天】在Spring Boot开发中,定时任务通常通过@Scheduled注解来实现,这种方式简单直接,但存在一个显著的限制:任务的执行时间或频率在编译时就已经确定,无法在运行时动态调整。然而,在实际工作中,我们往往需要根据业务需求或外部条件的变化来动态调整定时任务的执行计划。本文将分享一个简单两步的解决方案,让你的Spring Boot应用中的定时任务也能动态设置,从而满足更灵活的业务需求。
203 4
|
3月前
|
Java 数据库连接 Spring
【2021Spring编程实战笔记】Spring开发分享~(下)
【2021Spring编程实战笔记】Spring开发分享~(下)
37 1
|
3月前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
85 0
|
3月前
|
XML Java 数据库连接
【2020Spring编程实战笔记】Spring开发分享~(上)
【2020Spring编程实战笔记】Spring开发分享~
60 0