springboot task

在Spring Boot中,Spring Task 是一个内置的轻量级定时任务框架,无需引入额外依赖,即可实现周期性任务的调度。它基于Spring Framework的`spring-context`模块,通过注解方式配置,使用简单且功能强大。

核心使用步骤

  1. 启用定时任务

在Spring Boot应用的主启动类上添加 `@EnableScheduling` 注解,以开启定时任务功能。

```java

@SpringBootApplication

@EnableScheduling

public class MyApplication {

public static void main(String[] args) {

SpringApplication.run(MyApplication.class, args);

}

}

```

  1. 定义定时任务

创建一个Spring管理的Bean(使用 `@Component` 等注解),并在需要定时执行的方法上使用 `@Scheduled` 注解来指定执行策略。

```java

@Component

public class MyTask {

// 每隔5秒执行一次(从上一次执行开始计时)

@Scheduled(fixedRate = 5000)

public void taskWithFixedRate() {

System.out.println("Fixed Rate Task executed at: " + LocalDateTime.now());

}

// 上一次任务执行结束后,等待2秒再执行下一次

@Scheduled(fixedDelay = 2000)

public void taskWithFixedDelay() {

System.out.println("Fixed Delay Task executed at: " + LocalDateTime.now());

}

// 使用Cron表达式,每天凌晨2点执行

@Scheduled(cron = "0 0 2 * * ?")

public void taskWithCron() {

System.out.println("Cron Task executed at: " + LocalDateTime.now());

}

}

```

`@Scheduled` 注解的三种执行策略

  • `fixedRate`: 以固定的频率执行任务,间隔时间从每次任务的开始时刻算起。如果任务执行时间超过间隔时间,下一次任务会立即开始,可能导致任务并发执行。

  • `fixedDelay`: 以固定的延迟执行任务,间隔时间从每次任务的结束时刻算起。这能确保上一次任务完全结束后,才开始计算下一次的等待时间,更安全。

  • `cron`: 使用Cron表达式来指定复杂的调度规则,例如"每周一上午9点"或"每月1号的午夜"。这是最灵活的方式。

关键注意事项

  • 必须选择一种策略:在 `@Scheduled` 注解中,必须且只能指定 `fixedRate`、`fixedDelay` 或 `cron` 三者之一。

  • 单线程默认执行:Spring Task 默认使用单线程执行所有定时任务。如果一个任务执行时间过长,会阻塞其他任务的执行。如需并行执行,可以配置自定义的 `TaskScheduler`。

  • Cron表达式格式:标准的Cron表达式包含6或7个字段(秒、分、时、日、月、周、年),Spring Task 支持7个字段的格式。

通过以上方式,即可在Spring Boot应用中轻松实现各种定时任务需求。

相关推荐
郝学胜-神的一滴5 分钟前
干货版《算法导论》 02 :算法效率核心解密
java·开发语言·数据结构·c++·python·算法
布吉岛的石头6 分钟前
Java 岗,面试常问 100 题(精简版)
java·开发语言·面试
sinat_255487816 分钟前
收藏品·学习笔记
java·javascript·windows·学习·microsoft
一碗面4218 分钟前
Spring AI 多模态能力全景
java·spring·spring ai
信徒_8 分钟前
服务治理技术选型
java
枕星而眠9 分钟前
C语言数组专题:从一维到二维,吃透内存与指针
java·数据结构·算法
Andya_net11 分钟前
Spring | 深度剖析Spring Bean的生命周期:从加载到销毁的完整流程
java·spring·rpc
玛卡巴卡ldf12 分钟前
【Springboot升级AI】(大模型部署)LangChain4j、会话记忆、隔离消失持久化问题、ollama、RAG知识库、Tools工具
java·开发语言·人工智能·spring boot·后端·springboot
Maiko Star15 分钟前
Spring AI 多轮对话记忆(ChatMemory)保姆级教程:从内存版到 Redis 持久化
java·redis·spring