仅在存在@EnableScheduling时制作bean

时间:2019-12-05 11:31:15

标签: spring-boot scheduled-tasks spring-bean

我正在计划库。我正在使用@EnableScheduling在Spring Boot中启用和运行调度程序。我的调度程序中需要很多bean /组件。但是我只想在应用程序中存在@EnableScheduling时创建bean。我该如何实现?

1 个答案:

答案 0 :(得分:2)

如果您查看@EnableScheduling的功能,您会看到它导入了SchedulingConfiguration配置。在此配置类中,定义了一个名为ScheduledAnnotationBeanPostProcessor的bean。

这意味着,如果使用conditionals检查ScheduledAnnotationBeanPostProcessor bean的存在,则可以定义仅在存在@EnableScheduling时创建的bean。

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

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