当前位置: 首页 > news >正文

springboot定时任务 @Scheduled

在Spring框架中,可以使用@Scheduled注解来创建定时任务。要每隔一秒钟执行一次任务,需要使用cron表达式或fixedRate参数来配置定时任务。

使用 @Scheduled 注解

  1. 添加依赖:确保在项目的pom.xml(对于Maven)或build.gradle(对于Gradle)中添加了Spring的调度任务依赖。

    Maven:

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-task</artifactId>
    </dependency>
    

    Gradle:

    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-task'
    
  2. 启用定时任务:在主应用类上添加@EnableScheduling注解。

  3. 创建定时任务方法:在任意Spring管理的bean中创建一个使用@Scheduled注解的方法。

代码示例

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@SpringBootApplication
@EnableScheduling
public class ScheduledTaskApplication {public static void main(String[] args) {SpringApplication.run(ScheduledTaskApplication.class, args);}
}@Component
class ScheduledTasks {@Scheduled(fixedRate = 1000)public void performTask() {System.out.println("Task executed at: " + System.currentTimeMillis());}
}

说明

  • @EnableScheduling:启用Spring的调度任务。
  • @Scheduled(fixedRate = 1000):每隔1000毫秒(1秒)执行一次任务。fixedRate表示从任务开始时间开始计时。
  • performTask():定时任务执行的方法。此方法将在每次调度时执行。

可选配置

可以根据具体需求,使用不同的调度参数:

  • fixedDelay:上一个任务完成后等待固定时间再执行下一次任务。
  • initialDelay:在应用启动后,延迟指定时间再开始执行第一次任务。
  • cron:使用cron表达式配置复杂的调度规则。

示例

// 使用cron表达式每秒执行一次
@Scheduled(cron = "*/1 * * * * *")
public void performTaskWithCron() {System.out.println("Task executed with cron at: " + System.currentTimeMillis());
}// 使用fixedDelay在上一个任务完成后等待1000毫秒再执行下一次
@Scheduled(fixedDelay = 1000)
public void performTaskWithFixedDelay() {System.out.println("Task executed with fixed delay at: " + System.currentTimeMillis());
}// 使用initialDelay在应用启动后延迟5秒执行第一次,然后每隔1秒执行一次
@Scheduled(initialDelay = 5000, fixedRate = 1000)
public void performTaskWithInitialDelay() {System.out.println("Task executed with initial delay at: " + System.currentTimeMillis());
}

下一步建议:
a. 使用 cron 表达式配置复杂的定时任务规则。
b. 添加日志记录,监控任务的执行情况和性能。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 1.5-协程基础与关键知识:连接线程的世界-回调型 API 协作
  • 《0基础》学习Python——第十五讲
  • Docker安装Zookeeper、RocketMQ
  • 【源码阅读】osproxy对象存储分布式代理(1)
  • Python面试题:在 Python 中,如何使用 multiprocessing 模块?
  • SpringBoot+HttpClient实现文件上传下载
  • LabVIEW异步和同步通信详细分析及比较
  • 0基础学python-14:python进阶之面向对象
  • Linux指令ros学习python深度学习bug学习笔记
  • 景区客流统计系统提升服务精准度
  • 深入理解Session和Cookie的作用与联系
  • 《汇编语言 基于x86处理器》- 读书笔记 - Visual Studio 2019 配置 MASM环境
  • 产品经理-一份标准需求文档的8个模块(14)
  • 亚信安全发布2024年第24期《勒索家族和勒索事件监控报告》
  • LabVIEW比例压力控制阀自动测试系统
  • 「译」Node.js Streams 基础
  • 【面试系列】之二:关于js原型
  • angular2 简述
  • Angularjs之国际化
  • Java超时控制的实现
  • jQuery(一)
  • js对象的深浅拷贝
  • mockjs让前端开发独立于后端
  • oldjun 检测网站的经验
  • React Native移动开发实战-3-实现页面间的数据传递
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 基于webpack 的 vue 多页架构
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 怎样选择前端框架
  • Java性能优化之JVM GC(垃圾回收机制)
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • ${factoryList }后面有空格不影响
  • (13):Silverlight 2 数据与通信之WebRequest
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (四) Graphivz 颜色选择
  • (转)人的集合论——移山之道
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .net core控制台应用程序初识
  • .NET NPOI导出Excel详解
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net的DataSet直接与SQL2005交互
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net中调用windows performance记录性能信息
  • @RequestMapping 的作用是什么?
  • @我的前任是个极品 微博分析
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决