【SpringBoot 调度任务】

在 Spring Boot 中实现调度任务(Scheduled Tasks),通过使用 @EnableScheduling 和 @Scheduled 注解来完成。

添加依赖

pom.xml 文件中有以下依赖项:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

Spring Boot Starter 已经包含了调度任务所需的所有依赖。

启用调度任务支持

需要在主应用程序类或配置类上添加 @EnableScheduling 注解以启用调度功能。

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

创建调度任务

在你想要定义调度任务的组件类上使用 @Component 或其他合适的组件注解,并在方法上使用 @Scheduled 注解来指定任务执行的时间规则。

java 复制代码
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTasks {

    // 每5秒执行一次任务
    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        System.out.println("执行时间:" + System.currentTimeMillis() / 1000);
    }

    // 在每天凌晨1点执行任务
    @Scheduled(cron = "0 0 1 * * ?")
    public void executeDailyTask() {
        System.out.println("每日凌晨1点执行的任务");
    }
}

@Scheduled 注解可以接受几种不同的参数:

  • cron: 使用标准的 cron 表达式来定义复杂的调度模式。
  • fixedRate: 定义每次任务之间的固定延迟时间(以毫秒为单位)。它会在前一个任务完成后立即开始下一个任务,而不考虑任务本身的执行时间。
  • fixedDelay: 类似于 fixedRate,但它是在前一个任务完成后等待指定的时间才开始下一个任务。
  • initialDelay: 设置第一次调度之前的延迟时间。

运行应用程序

当启动应用程序时,Spring Boot 会自动检测到带有 @Scheduled 注解的方法,并按照定义的时间规则执行它们。

相关推荐
程序员爱钓鱼几秒前
Node.js 编程实战:测试与调试 —— 日志与监控方案
前端·后端·node.js
雄大4 分钟前
使用 QWebChannel 实现 JS 与 C++ 双向通信(超详细 + 踩坑总结 + Demo)
后端
smileNicky6 分钟前
Lombok @Data 在 IDEA 中运行报错解决方案
java·ide·intellij-idea
计算机学姐6 分钟前
基于SpringBoot的汉服租赁系统【颜色尺码套装+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
回家路上绕了弯7 分钟前
定期归档历史数据实战指南:从方案设计到落地优化
分布式·后端
+VX:Fegn08957 分钟前
计算机毕业设计|基于springboot + vue建筑材料管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
掘金者阿豪8 分钟前
Redis `WRONGTYPE` 错误的原因及解决方法
后端
qq_5470261799 分钟前
Maven 仓库管理
java·maven
天天摸鱼的java工程师11 分钟前
线程池深度解析:核心参数 + 拒绝策略 + 动态调整实战
java·后端
mjhcsp11 分钟前
C++ KMP 算法:原理、实现与应用全解析
java·c++·算法·kmp