spring-boot - 仅当存在 @EnableScheduling 时才制作 bean
问题描述
我正在研究调度库。我正在使用@EnableScheduling
在 Spring Boot 中启用和运行调度程序。我的调度程序中需要许多 bean/组件。但我只想在应用程序中存在 bean 时才创建它们@EnableScheduling
。我怎样才能做到这一点?
解决方案
如果你看看做了什么@EnableScheduling
,你会看到它导入了SchedulingConfiguration
配置。在这个配置类中,定义了一个 bean,称为ScheduledAnnotationBeanPostProcessor
.
这意味着如果您使用条件来检查ScheduledAnnotationBeanPostProcessor
bean 的存在,您可以定义仅在@EnableScheduling
存在时创建的 bean。
为此,我们可以使用@ConditionalOnBean
注解。例如:
@Bean
@ConditionalOnBean(ScheduledAnnotationBeanPostProcessor.class)
public CommandLineRunner appRunner() {
return args -> logger.info("Scheduling is enabled!");
}
推荐阅读
- c# - Outlook 2016 AttachmentRemove 不会触发
- jquery - Node.js 将所需模块优先于其他所需模块
- c# - 自定义字体在 Uno.WASM 中有效,但在 Uno.UWP 中无效
- python - 如何在破折号数据表的列字段中添加超链接
- keycloak - 使用 OIDC 和 KeyCloak 从 SecurityIdentity 获取字段 issueFor
- python - 是否可以将图像转换为图像 TensorFlow 模型到 CoreML?
- reactjs - 删除功能删除一个项目,但它会自动返回错误:反应
- libreoffice - 用于添加索引条目的 LO Writer 快捷方式
- javascript - 事件处理程序仅在将事件作为参数传递时才起作用 - 为什么?
- node.js - 删除带有子文档的整个 mongodb 文档