Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot定时任务@EnableScheduling这个注解如何使用

SpringBoot定时任务@EnableScheduling这个注解如何使用

作者头像
一写代码就开心
发布于 2022-12-01 05:09:43
发布于 2022-12-01 05:09:43
77500
代码可运行
举报
文章被收录于专栏:java和pythonjava和python
运行总次数:0
代码可运行

目录

1 使用这个注解的目的

设置在特定的时间去执行某一个类,或者方法

2 使用步骤

2.1 导入基本依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <!-- SpringBoot 核心组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.2 写一个springboot启动类

启动类里面使用@EnableScheduling 注解开启功能,自动扫描

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootApplication
@EnableScheduling //开启定时任务
public class MainApplication {

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

2.3 要执行的方法或者类上写注解

要在任务的类上写@Component 要在任务方法上写@Scheduled

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Component
public class ggg{
    //表示方法执行完成后5秒
    @Scheduled(fixedDelay = 5000)
    public void yy() throws InterruptedException {
        System.out.println("fixedDelay 每隔5秒" + new Date());
    }
}

写完以上的代码,只要项目启动的,到了方法上面设置的时间,方法就会执行

3 注解参数的讲解

fixedDelay和fixedRate,单位是毫秒,这里这里就是5秒和3秒, 它们的区别就是:fixedRate就是每多次分钟一次,不论你业务执行花费了多少时间。我都是1分钟执行1次,而fixedDelay是当任务执行完毕后1分钟在执行。所以根据实际业务不同,我们会选择不同的方式。

cron表达式:比如你要设置每天什么时候执行,就可以用它 cron表达式,有专门的语法,而且感觉有点绕人,不过简单来说,大家记住一些常用的用法即可,特殊的语法可以单独去查。

cron一共有7位,但是最后一位是年,可以留空,所以我们可以写6位:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* 第一位,表示秒,取值0-59
* 第二位,表示分,取值0-59
* 第三位,表示小时,取值0-23
* 第四位,日期天/日,取值1-31
* 第五位,日期月份,取值1-12
* 第六位,星期,取值1-7,星期一,星期二...,注:
 不是第1周,第二周的意思
          另外:1表示星期天,2表示星期一。
*7为,年份,可以留空,取值1970-2099

cron中,还有一些特殊的符号,含义如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(*)星号:可以理解为每的意思,每秒,每分,每天,每月,每年...
(?)问号:问号只能出现在日期和星期这两个位置。
(-)减号:表达一个范围,如在小时字段中使用“10-12”,
则表示从1012点,即10,11,12
(,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,
则表示星期一,星期二,星期四
(/)斜杠:如:x/y,x是开始值,y是步长,比如在第一位(秒)
 0/15就是,从0秒开始,每15秒,最后就是015304560   
  另:*/y,等同于0/y

举例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
0 0 3 * * ?     每天3点执行
0 5 3 * * ?     每天35分执行
0 5 3 ? * *     每天35分执行,与上面作用相同
0 5/10 3 * * ?  每天3点的 5分,15分,25分,35分,45分,55分这几个时间点执行
0 10 3 ? * 1    每周星期天,310分 执行,注:1表示星期天    
0 10 3 ? * 1#3  每个月的第三个星期,星期天 执行,#号只能出现在星期的位置
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot系列之使用Spring Task实现定时任务
定时任务是企业开发中很常用的,比如定时推送一些接口数据,在java中实现定时任务的方法有Spring Task、Quartz等等框架,也有JDK自带的ScheduledExecutorService、Timer
SmileNicky
2020/07/23
1.2K0
SpringBoot 整合定时任务
@Scheduled 来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)
一个风轻云淡
2023/10/15
2380
SpringBoot 集成 Schedule 详解
Schedule 主要有三种调度方式:fixedRate、fixedDelay、cron表达式。
solocoder
2022/04/06
7100
SpringBoot 集成 Schedule 详解
Spring Boot 实现定时任务的 4 种方式
Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。
Java技术栈
2019/06/14
13.6K0
Spring Boot 实现定时任务的 4 种方式
SpringBoot 定时任务踩坑记录
springboot已经支持了定时任务Schedule模块,一般情况已经完全能够满足我们的实际需求。今天就记录一下我使用 schedule 时候踩的坑吧。
JAVA葵花宝典
2019/05/24
8290
第二十六章:SpringBoot使用@Scheduled创建定时任务
定时任务一般会存在中大型企业级项目中,为了减少服务器、数据库的压力往往会采用时间段性的去完成某些业务逻辑。比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回调,这种回调一般都是定时任务来完成的。还有就是报表的生成,我们一般会在客户访问量过小的时候来完成这个操作,那往往都是在凌晨。这时我们也可以采用定时任务来完成逻辑。SpringBoot为我们内置了定时任务,我们只需要一个注解就可以开启定时为我们所用了。 本章目标 基于SpringBoot架构完成注解@Schedu
恒宇少年
2018/06/27
8210
Spring学习笔记(二十五)——springboot定时任务和Gson、Date、进制等工具的使用
在项目开发过程中,我们经常需要执行具有周期性的任务。通过定时任务可以很好的帮助我们实现。 spring项目启动后想对一些数据做同步,一些表数据要不定时统计,一些业务报表的汇总和生成,大量数据导入后台处理,一般都是用定时任务去处理,对于太占资源的任务需要后台处理,越复杂的系统定时任务也越多,需要监控的东西也很多。 而在springBoot提供了简单的定时任务支持,由于Spring Schedule包含在spring-boot-starter基础模块中了,所有不需要增加额外的依赖。
不愿意做鱼的小鲸鱼
2022/09/26
1.1K0
Spring学习笔记(二十五)——springboot定时任务和Gson、Date、进制等工具的使用
Spring Boot: 定时任务注解@Scheduled以及动态任务SchedulingConfigurer 实践
cronExpression定义时间规则,Cron表达式由6或7个空格分隔的时间字段组成:秒 分钟 小时 日期 月份 星期 年(可选)
Freedom123
2024/03/29
3K0
Spring Boot: 定时任务注解@Scheduled以及动态任务SchedulingConfigurer 实践
SpringBoot实现定时任务的三种方式,总有一款适合你!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/30
7.3K0
spring-boot之简单定时任务
本文讲述了一个简单的定时任务示例,通过使用Spring Boot和Spring Batch,实现每隔5秒打印一次当前时间。同时介绍了Spring Boot中定时任务的配置方式,包括基于注解的方式和基于配置文件的方式。
用户1141560
2017/12/26
6660
spring-boot之简单定时任务
Spring Boot几种定时任务的实现方式
在实际开发中,我们多多少少都会用到一些定时任务的场景,本文来聊一下常用的定时任务。
田维常
2022/11/25
6710
Spring Boot几种定时任务的实现方式
SpringBoot下使用定时任务的方式全揭秘
定时任务作为一种系统调度工具,在一些需要有定时作业的系统中应用广泛,如每逢某个时间点统计数据、在将来某个时刻执行某些动作...定时任务在主流开发语言均提供相应的API供开发者调用,在Java中,实现定时任务有很多种方式,原生的方式实现一个完整定时任务需要由Timer、TimerTask两个类,Timer是定时器类,用来按计划开启后台线程执行指定任务,TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。除此之外,还可以用ScheduledExecutorService类或者使用第三方jar库Quartz,其中Quartz是一个优秀的定时任务框架,发展至今已经非常成熟,以致后来其他的定时任务框架的核心思想或底层大多源于Quartz。
公众号编程无界
2019/02/13
5130
SpringBoot下使用定时任务的方式全揭秘
ShedLock的4种使用方式(分布式定时任务锁)
基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响,上一个线程不执行完成,下一个不会执行。
ha_lydms
2023/08/10
2.6K0
ShedLock的4种使用方式(分布式定时任务锁)
SpringBoot实现定时任务@EnableScheduling
来源:http://blog.csdn.net/weixin_42949841/article/details/108695570
Java小咖秀
2020/11/03
5500
SpringBoot实现定时任务@EnableScheduling
springboot07、task定时任务
springboot07、task定时任务 定时任务的概述 在项目中开发定时任务应该是一种比较常见的需求,在Java中开发定时任务主要有三种方案:一是使用JDK自带的Timer,二是使用第三方组件Quartz',三是使用Spring Task。 Timer是JDK自带的定时任务工具,其简单易用,但是对于复杂的定时规则无法满足,在实际项目开发中也很少使用到,Quartz功能强大,但是使用起来相对笨重,而Spring Task则具备了前两者之间的优点,使用起来简单,除Spring 相关的包外不需要额外
红目香薰
2022/11/30
4320
springboot07、task定时任务
@scheduled注解配置时间(spring定时器注解)
该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。
全栈程序员站长
2022/08/01
6.2K1
@scheduled注解配置时间(spring定时器注解)
Spring Boot系列之使用@Scheduled实现定时任务
假设,我们有一个数据同步的需求:每隔5秒执行一次数据同步。那么我们该如何实现这个数据同步任务呢?
冯文议
2021/10/25
7640
Spring Boot系列之使用@Scheduled实现定时任务
重学SpringBoot系列之异步任务与定时任务
在 Spring Boot 入口类上配置 @EnableAsync 注解开启异步处理。 创建任务抽象类 AbstractTask,并分别配置三个任务方法 doTaskOne(),doTaskTwo(),doTaskThree()。
大忽悠爱学习
2021/12/07
1.5K0
重学SpringBoot系列之异步任务与定时任务
@scheduled注解 定时任务控制(Spring响应式编程)
项目经常会用到定时任务,实现定时任务的方式有很多种。在Spring框架中,实现定时任务很简单,常用的实现方式是使用注解@Scheduled。
全栈程序员站长
2022/07/31
7800
@scheduled注解 定时任务控制(Spring响应式编程)
【SpringBoot2.0系列10】SpringBoot之@Scheduled任务调度实现结语
相信大家在实际工作场景中会遇到这样的情况,系统之间存在数据交换,为了不影响正常服务器运,我们需要在每天的凌晨来进行数据交换,但是让程序每天凌晨自动执行呢,下面带大家来了解一下springboot定时任务调度。
yukong
2018/09/03
3.8K0
【SpringBoot2.0系列10】SpringBoot之@Scheduled任务调度实现结语
推荐阅读
相关推荐
SpringBoot系列之使用Spring Task实现定时任务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验