java @Scheduled怎么设置凌晨12点和 中午12点执行
时间: 2024-10-22 14:10:04 浏览: 25
SpringBoot执行定时任务@Scheduled的方法
5星 · 资源好评率100%
在Java中,`@Scheduled`是Spring框架提供的用于定时任务的注解,通常配合`TaskScheduler`一起使用。如果你想让任务分别在每天凌晨12点(0点)和中午12点(12点)执行,你可以这样做:
```java
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
private final TaskScheduler taskScheduler;
public ScheduledTasks(TaskScheduler taskScheduler) {
this.taskScheduler = taskScheduler;
}
// 使用cron表达式设置每天凌晨12点执行的任务
@Scheduled(cron = "0 0 * * *") // 第一个数字表示分钟,0表示每小时开始时
public void executeAtMidnight() {
System.out.println("Task executed at midnight");
}
// 设置每天中午12点执行的任务,由于cron表达式的秒数范围是0-59,这里假设任务将在12:01分执行
@Scheduled(cron = "1 0 * * *") // 第二个数字设为1,跳过每小时的第一分钟
public void executeAtNoon() {
System.out.println("Task executed at noon (slightly after 12:00)");
}
}
```
在这个例子中,`cron`属性是一个时间表达式,按照"秒 分 钟 小时 月份 星期"的顺序定义。第一个任务会在每天的第一个分钟执行(也就是凌晨12点),第二个任务会在每天的第二分钟执行(为了避免与第一个任务冲突,我们设置了稍微晚一点的时间,比如12:01)。记得在启动应用时配置好`TaskScheduler`。
阅读全文