Весенние запланированные задачи не стреляют - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь запустить метод в Spring с ScheduledTasks, поэтому у меня есть следующий класс:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.time.format.DateTimeFormatter;

@Component
public class ScheduledTasks {
    private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);
    private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");

    public void scheduleTaskWithFixedRate() {
    }

    public void scheduleTaskWithFixedDelay() {
    }

    public void scheduleTaskWithInitialDelay() {
    }

    public void scheduleTaskWithCronExpression() {
    }
}

И следующий метод в другом классе

  @Scheduled(fixedRate = 10 * 1000) //10 seconds
  public void taskThatRunsPeridically() {
      logger.info("Scheduled task method has been called ");
  }

Нометод никогда не запускается, я заметил, что если я переместу метод в класс Spring Boot Application (класс, который содержит main)

Почему это происходит? Как я могу получить методы расписания для запуска в любом месте класса, в который я их добавлю?

1 Ответ

2 голосов
/ 13 октября 2019

Вы должны добавить аннотацию @EnableScheduling в одном из ваших классов конфигурации Spring или выше другого класса, содержащего ваш метод, например:

@Component
@EnableScheduling
public MySchdeduleClass {

      @Scheduled(fixedRate = 10 * 1000) //10 seconds
      public void taskThatRunsPeridically() {
          logger.info("Scheduled task method has been called ");
      }
}
...