我想通过外部配置文件禁用弹簧调度。我有配置文件设置,下面示例中的任务注销了以下内容。
INFO MainTaskScheduler:36 - scheduled task: Update converted bookings false.所以我大部分时间都在那儿。

我要实现的目标是不必在每个任务方法中放入逻辑来确定是否已启用调度属性。

所以在我的配置文件上这样的东西(这是无效的代码)
@EnableScheduling(${enable.scheduling})

我的工作片段



应用配置

@Configuration
@EnableTransactionManagement
@EnableScheduling
@ComponentScan( /*etc*/})
public class AppConfiguration {

}


MainTaskScheduler

@Component
public class MainTaskScheduler {

    private Logger log = LoggerFactory.getLogger(getClass());

    @Value("${enable.scheduling}")
    private Boolean enableScheduling;

    @Scheduled(fixedRate=300) // every 5 minutes -- check if any existing quotes have been converted to bookings
    public void updateConvertedBookings() {
        log.info("scheduled task: Update converted bookings "+enableScheduling);
        // logic for class here
    }
}


application.properties

enable.scheduling=false

最佳答案

如果您使用的是Spring Boot,则可以使用@ConditionalOnExpression注释启用或禁用调度:

@ConditionalOnExpression("'${enable.scheduling}'=='true'")

10-07 22:43