@ConditionalOnExpressionを使う

@Scheduledでタスクを作成したけど、設定ファイルで起動する/しないを切り替えたい。

@ConditionalOnExpressionを利用すればできるらしい。

SleepTasks.java

~省略~

@Component
@RequiredArgsConstructor
@ConditionalOnExpression("${tasks.sleep-tasks.task-on}")
public class SleepTasks {
    private static final Logger LOGGER = LoggerFactory.getLogger(SleepTasks.class);

    @Value("${tasks.sleep-tasks.max-sleep-millisecond}")
    private long MAX_SLEEP_MILLISECOND;

    @Value("${tasks.sleep-tasks.sleep-millisecond}")
    private long SLEEP_MILLISECOND;

    private final StringRedisTemplate redisTemplate;

    private final DataLinkageBL dataLinkageBL;

    private int skipCount = 0;

    @Scheduled(initialDelayString = "${tasks.sleep-tasks.initial-delay}", fixedRateString = "${tasks.sleep-tasks.fixed-rate}")
    public void doSomething() {
~省略~

application.yml

・task-onがtrueなら実行される。falseなら実行されない。

~省略~
tasks:
  sleep-tasks:
    initial-delay: 1000
    fixed-rate: 1000
    sleep-millisecond: 1000
    max-sleep-millisecond: 10000
    task-on: false
~省略~

他にもリソースの有無で動作を切り替えたりいろいろ用意されているらしい

【参考】

条件で動作するアノテーションを使う | Korean-Man in Tokyo