这是我的java课程
@Component
public class ReportTasckScheduler {
@PostConstruct
public void init() {
List<ReportTasck> allByStatus = reportTasckRepository.findAllByStatus(1);
if (allByStatus.isEmpty()) return;
for (ReportTasck allByStatu : allByStatus) {
allByStatu.setStatus(0);
allByStatu.setStartDate(new Date());
reportTasckRepository.save(allByStatu);
}
}
@Scheduled(fixedRate = 5000) //раскоментировать для шедлинга
public void startSchedule() throws IOException, NurException {
//code
}
}
我能否确定init()
始终在startSchedule()
之前致电?
如果没有,如何在初始化期间,首次启动之前调用我的检查startSchedule()
?
答案 0 :(得分:3)
在 bean初始化期间将调用 {em}。在初始化bean之后,将调用 PostConstruct
方法。
请注意,此bean仅在Spring上下文中存在一次,因此仅在启动时调用Scheduled
。
答案 1 :(得分:0)
不要使用注释来安排任务,将TaskScheduler注入您的类,然后在init方法结束时安排任务programamticaly
e.g。
@Inject
private TaskScheduler taskScheduler;
....
然后
taskScheduler.scheduleAtFixedRate(this,5000);