java @Scheduled 中午12点和凌晨12点 怎么设置
时间: 2024-11-03 17:13:25 浏览: 28
在Java中,如果你想使用`@Scheduled`注解来定期执行任务,并希望在中午12点和凌晨12点分别运行一次,你可以这样设置cron表达式。`@Scheduled`来自Spring框架,用于在预定的时间触发任务。
对于每天中午12点,cron表达式可以写成 `0 0 12 * * ?`,这里各字段代表:
- 第一位`0`表示分钟(范围0-59)
- 第二位`0`表示小时(范围0-23)
- 第三位`12`表示月份中的日期(范围1-31)
- 第四位星号`*`表示月份中的星期几(所有)
- 第五位问号`?`表示年份
对于每天凌晨12点,即前一天的晚上11点59分,cron表达式可以写成 `59 59 23 * * ?`。
下面是一个例子:
```java
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTask {
@Scheduled(cron = "0 0 12 * * ?")
public void taskAtNoon() {
// 中午12点执行的任务
}
@Scheduled(cron = "59 59 23 * * ?")
public void taskAtMidnight() {
// 凌晨12点执行的任务
}
}
```
注意,这两个任务都会在开始执行应用时立即调度一次,之后按照设定的频率重复执行。如果你想让它们只在应用启动后的第一个时间点执行,可以在方法上添加`@PostConstruct`。
阅读全文