@Scheduled 0 * /15 * * * ?
时间: 2025-01-23 21:07:53 浏览: 42
### 解析 `@Scheduled` 注解中的 Cron 表达式
对于给定的 Cron 表达式 `"0 * /15 * * * ?"`,其含义如下:
- **秒** (`0`):表示在每一分钟的第一秒触发。
- **分** (`*`):星号意味着匹配所有的可能值,在这里指代的是每个小时内的任意一分钟。
- **小时** (`/15`):斜杠 `/` 后跟的时间间隔指定从零点开始每隔多少单位时间重复一次;此处意为每过15个小时执行一次。然而这个位置通常用于定义具体的小时数而非周期性模式,因此这里的设置可能是错误配置[^1]。
- **日** (`*`):每一天都会运行该任务。
- **月** (`*`):每个月都符合条件。
- **星期几** (`?`):问号在此处代表不关心具体哪一天,即每周每天都满足条件。
显然,上述解释存在逻辑上的矛盾——特别是“小时”的部分。标准情况下,“小时”字段应仅接受整数值或范围列表而不是带有步长的形式。如果意图表达的是“每15分钟”,那么正确的形式应该是将频率设定放在“分钟”一栏中,而保持其他项不变。
为了实现真正意义上的“每15分钟执行一次”,应当采用如下的Cron表达式:
```java
@Scheduled(cron = "0 0/15 * * * ?")
```
这会使得程序在每一个完整的十五分钟时段(比如00:00, 00:15, 00:30...)启动定时任务,并且每次都在这些时刻的第一个秒内被执行[^2]。
#### 正确的应用实例展示
以下是按照正确格式编写的Java类片段,展示了如何利用Spring Boot框架创建一个每15分钟执行的任务:
```java
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
/**
* 每隔15分钟执行此方法.
*/
@Scheduled(cron = "0 0/15 * * * ?")
public void performTask() {
System.out.println("Executing task every 15 minutes.");
}
}
```
阅读全文
相关推荐


















