SpringBoot日常:@Scheduled实现服务启动时执行一次
在Spring Boot中,你可以使用@Scheduled
注解来创建定时任务,但如果你想让定时任务仅在应用启动时执行一次,你可以通过设置一个标志来确保任务只执行一次。
以下是一个简单的例子:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class StartupScheduledTask {
private static boolean taskCompleted = false;
@Scheduled(fixedRate = 5000)
public void scheduleTask() {
if (!taskCompleted) {
// 你的任务逻辑
// ...
// 标记任务已完成
taskCompleted = true;
}
}
}
在这个例子中,taskCompleted
是一个静态变量,用来跟踪任务是否已经执行过。scheduleTask
方法使用@Scheduled
注解来定义定时任务,并且每5秒执行一次。如果 taskCompleted
是 false
,则执行任务逻辑,并将 taskCompleted
设置为 true
。这样,即使定时任务在后续执行时间点再次被调用,因为 taskCompleted
现在是 true
,任务逻辑也不会再次执行。这确保了任务只在应用启动时执行一次。
评论已关闭