如何描述在应用程序启动后和00:00之后运行的Spring调度程序?
我会用两个独立的结构来做这件事。
对于应用程序启动后,使用@PostConstuct
,并在午夜的每个晚上使用@Scheduled
和cron
值设置。两者都适用于一种方法。
public class MyClass {
@PostConstruct
public void onStartup() {
doWork();
}
@Scheduled(cron="0 0 0 * * ?")
public void onSchedule() {
doWork();
}
public void doWork() {
// your work required on startup and at midnight
}
}
首先,您应该为应用程序配置添加@EnableScheduling
注释。
第二个为调度程序添加@Component
或@Service注释。如果您正在使用Scheduled
注释,它会在初始化后自动运行以更改它,您可以在注释中使用initialDelay
参数。
这是完整的例子
@Component
public class MyScheduler {
@Scheduled(cron="*/10 * * * * *")
public void onSchedule() {
doWork();
}
public void doWork() {
// your work required on startup and at midnight
}
}
关于这个主题,您可以使用@EventListener注释。
这是一个例子:
@Component
public class MyScheduler {
@EventListener(ApplicationReadyEvent.class)
public void onSchedule() {
doWork();
}
public void doWork() {
// your work required on startup
}
}
了解更多信息,请点击此链接https://www.baeldung.com/cron-expressions
对于要在午夜完成的特定任务,有一个预定义的注释,可以帮助,尝试@midnight
。它应该工作:
@midnight
public void midnightRun(){
doTheWork();
}