Применить планировщик задач Spring к нескольким экземплярам одного и того же компонента с помощью аннотации - PullRequest
1 голос
/ 18 июня 2020

У меня есть одна задача класса с методом @Scheduled, как показано ниже

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

TaskConfig создает 2 разных bean-компонента одного класса:

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 на основе аннотаций? Пожалуйста, предложите. Заранее спасибо!

1 Ответ

1 голос
/ 22 июня 2020

Вы можете использовать аннотацию @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

EDIT :

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

 @Bean("task2")
 public Task getTask1(){return new Task() {
   @Override
   @Scheduled
   public void task(){super.task();}
 };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...