springboot中的定时执行注解
时间: 2025-05-29 17:23:35 浏览: 20
### 关于 Spring Boot 定时任务执行注解 `@Scheduled` 的使用方法
#### 1. 基本概念
在 Spring Boot 中,`@Scheduled` 是一个用于定义定时任务的注解。它允许开发者通过简单的配置来实现周期性运行的任务[^4]。
为了使 `@Scheduled` 生效,必须在应用程序的启动类或其他配置类上启用定时任务支持,这可以通过添加 `@EnableScheduling` 注解来完成[^1]。
---
#### 2. 配置方式
`@Scheduled` 提供了多种配置选项以满足不同的需求:
##### (1) **固定延迟 (`fixedDelay`)**
此属性表示每次任务完成后等待指定的时间间隔再开始下一次任务。
```java
@Scheduled(fixedDelay = 5000) // 单位为毫秒
public void fixedDelayTask() {
System.out.println("Fixed delay task executed at: " + new Date());
}
```
##### (2) **固定频率 (`fixedRate`)**
此属性表示按照固定的频率重复执行任务,无论前次任务是否已完成。
```java
@Scheduled(fixedRate = 10000) // 每隔10秒执行一次
public void fixedRateTask() {
System.out.println("Fixed rate task executed at: " + new Date());
}
```
##### (3) **Cron 表达式 (`cron`)**
这是最灵活的一种配置方式,可以精确到年、月、日、小时、分钟甚至秒级的调度计划。
```java
@Scheduled(cron = "0/5 * * * * ?") // 每5秒执行一次
public void cronTask() {
System.out.println("Cron task executed at: " + new Date());
}
```
关于 Cron 表达式的具体语法可参考相关文档[^4]。
---
#### 3. 示例代码
下面是一个完整的示例程序展示如何设置并运行多个定时任务:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling // 开启定时任务功能
public class ScheduledDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ScheduledDemoApplication.class, args);
}
}
@Component
public class MyScheduler {
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("当前时间为:" + new Date());
}
@Scheduled(cron = "*/10 * * * * ?")
public void performTaskEveryTenSeconds() {
System.out.println("每十秒钟触发一次...");
}
}
```
---
#### 4. 注意事项
- 如果发现定时任务未能正常工作,请确认已正确添加 `@EnableScheduling` 和组件扫描路径中的 `@Component` 或其他适当作用域声明[^2]。
- 当依赖某些 Bean 而这些 Bean 尚未被完全初始化之前就尝试调用它们的方法可能会引发错误。此时建议调整加载顺序或改用构造器注入等方式解决潜在冲突[^5]。
---
阅读全文
相关推荐




















