使用注解将 Spring task-scheduler 应用于同一 Bean 的多个实例

Apply Spring task-scheduler to multiple instances of same Bean using Annotation

我有一个 class 使用 @Scheduled 方法的任务,如下

public class Task{
 public void task(){}
}

TaskConfig 创建 2 个相同的不同 bean class :

public class TaskConfig{
 @Bean("task1")
 public Task getTask1(){return new Task();}

 @Bean("task2")
 public Task getTask1(){return new Task();}
}

使用基于 xml 的配置,我可以为以下相同的方法创建 2 个调度程序,它们将 运行 在不同的时间。 :

<task:scheduled-tasks >       
        <task:scheduled ref="task1"    method="task"           cron="*/5 * * * * ?" />
        <task:scheduled ref="task2"    method="task"           cron="*/30 * * * * ?" />
</task:scheduled-tasks>

但是如何在 Spring 5 Annotation based 中实现同样的场景?请提前suggest.Thanks!

您可以使用 @Scheduled 注释并注释您要执行的方法:https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support 您还可以定义类似 cron 的表达式。

您还应确保已启用计划:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html

编辑:

public class TaskConfig{
 @Bean("task1")
 public Task getTask1(){return new Task() {
   @Override
   @Scheduled
   public void task(){super.task();}
 };
}

 @Bean("task2")
 public Task getTask2(){return new Task() {
   @Override
   @Scheduled
   public void task(){super.task();}
 };
}