java - Spring ScheduledTasks不触发

原文 标签 java spring spring-boot scheduled-tasks

我正在尝试使用ScheduledTasks在Spring中运行方法,所以我有以下类:

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的类)

为什么会这样呢?我如何才能使计划方法在添加它们的任何类中运行?

最佳答案

您必须在一个Spring配置类中或在包含您的方法的另一个类之上添加@EnableScheduling注释,例如:

@Component
@EnableScheduling
public MySchdeduleClass {

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

关于java - Spring ScheduledTasks不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361755/

相关文章:

java - 不幸的是,与服务器的连接出错了

java - 通过ObjectInputStream反序列化时发生StreamCorruptedException

java - 测试时如何去除路由的重名

spring - 访问被拒绝(用户是匿名的);重定向到 Spring 中的身份验证入口点

spring - 用于在单元测试中导入 bean 的 @Import 与 @ContextConfiguration

java - 我的代码给了我一个没有这样的元素异常

java - 是否有 uuid validator 注释?

spring-boot - 如何在 Http inbound-gateway 中同时接受固定数量的请求?

java - 在 CRaSH shell 中过滤 Spring beans(Spring-boot 远程 shell)

java - 在字符数组中查找并拼凑分散的单词