首页 > 解决方案 > 在一种方法中使用多个 @Scheduled 注释

问题描述

是否允许/工作在一种方法中有多个 @Scheduled 注释?

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

标签: javaspring-bootscheduled-tasks

解决方案


是的,这是完全合法的,就像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() {
//...
}

推荐阅读