Skip to content

根据配置文件禁用 @Scheduled 定时任务

🏷️ Spring Boot

本来是想通过 @ConditionalOnProperty 来实现这个功能的,但是发现不起作用。

java
public class SampleTask {

    @Scheduled(cron = "${task.sample.disable.cron:0 0/10 * * * ?}")
    @ConditionalOnProperty(name = "task.sample.disable.enable", havingValue = "true", matchIfMissing = true)
    public void disableSample() {
        log.info("disable sample task");
    }
}

根据 StackOverflow 上的回答,可以通过将 cron 表达式配置为 - 来禁用定时任务。

java
public class SampleTask {

    @Scheduled(cron = "${task.sample.disable.cron:-}")
    public void disableSample() {
        log.info("disable sample task");
    }
}

在配置文件中配置 cron 表达式:

yaml
task:
  sample:
    disable:
      cron: "-"