@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 ~省略~
他にもリソースの有無で動作を切り替えたりいろいろ用意されているらしい
【参考】