应用程序启动后和午夜后运行的Spring调度程序

问题描述 投票:7回答:4

如何描述在应用程序启动后和00:00之后运行的Spring调度程序?

spring cron scheduling
4个回答
26
投票

我会用两个独立的结构来做这件事。

对于应用程序启动后,使用@PostConstuct,并在午夜的每个晚上使用@Scheduledcron值设置。两者都适用于一种方法。

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
    }
}

2
投票

首先,您应该为应用程序配置添加@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
    }
}

1
投票

关于这个主题,您可以使用@EventListener注释。

这是一个例子:

@Component
public class MyScheduler {

    @EventListener(ApplicationReadyEvent.class)
    public void onSchedule() {
        doWork();
    }

    public void doWork() {
        // your work required on startup
    }
}

0
投票

了解更多信息,请点击此链接https://www.baeldung.com/cron-expressions

对于要在午夜完成的特定任务,有一个预定义的注释,可以帮助,尝试@midnight。它应该工作:

    @midnight
    public void midnightRun(){
       doTheWork();
    }
© www.soinside.com 2019 - 2024. All rights reserved.