我正在计划库。我正在使用@EnableScheduling
在Spring Boot中启用和运行调度程序。我的调度程序中需要很多bean /组件。但是我只想在应用程序中存在@EnableScheduling
时创建bean。我该如何实现?
答案 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!");
}