首页 > 解决方案 > 仅当存在 @EnableScheduling 时才制作 bean

问题描述

我正在研究调度库。我正在使用@EnableScheduling在 Spring Boot 中启用和运行调度程序。我的调度程序中需要许多 bean/组件。但我只想在应用程序中存在 bean 时才创建它们@EnableScheduling。我怎样才能做到这一点?

标签: spring-bootscheduled-tasksspring-bean

解决方案


如果你看看做了什么@EnableScheduling,你会看到它导入了SchedulingConfiguration配置。在这个配置类中,定义了一个 bean,称为ScheduledAnnotationBeanPostProcessor.

这意味着如果您使用条件来检查ScheduledAnnotationBeanPostProcessorbean 的存在,您可以定义仅在@EnableScheduling存在时创建的 bean。

为此,我们可以使用@ConditionalOnBean注解。例如:

@Bean
@ConditionalOnBean(ScheduledAnnotationBeanPostProcessor.class)
public CommandLineRunner appRunner() {
    return args -> logger.info("Scheduling is enabled!");
}

推荐阅读