一个方法上有多个 @Scheduled 注释

Art*_*gon 7 java scheduled-tasks spring-boot

是否允许/在一个方法上有多个 @Scheduled 注释?

@Scheduled(cron = "0 5 0 * * *", zone = "Europe/Stockholm")
@Scheduled(fixedRate = 1000 * 60 * 20, initialDelay = 1000 * 60 * 5)
public void setSalariesAsArchived() {
//...
}
Run Code Online (Sandbox Code Playgroud)

Yas*_*jaj 11

是的,这是完全合法的,就像Javadoc中所述的注释@Scheduled一样@Repeatable@Schedules

聚合多个Scheduled注释的容器注释。可以在本机使用,声明多个嵌套Scheduled注释。还可以与 Java 8 对可重复注释的支持结合使用,Scheduled可以简单地在同一方法上声明多次,隐式生成此容器注释。

因此,您可以像以前一样使用它,也可以@Schedules像下面的示例一样使用它来包装它

@Schedules({
    @Scheduled(cron = "0 5 0 * * *", zone = "Europe/Stockholm"),
    @Scheduled(fixedRate = 1000 * 60 * 20, initialDelay = 1000 * 60 * 5)
})
public void setSalariesAsArchived() {
//...
}
Run Code Online (Sandbox Code Playgroud)