谈谈springboot中@Conditional相关注解
@Conditional是一个元注解
@ConditionalOnClass(xx.class)
这是用于修饰一个类的注解。它主要是让你的代码具有兼容性,如在多模块下common模块中有一些仅仅是部分其他模块依赖、需要配置的类(例如rabbitMQ配置类,我相信他不应该被全模块需要,但是他放在常用模块中依旧是最合适的)只有当前模块内存在xx.class时,才会注册相关bean
@ConditionalOnMissingClass
与上述完全相反,只有在不存在xx.class时,才会对bean进行实例化。
@ConditionalOnMissingBean #注意请在自动装配类中使用这个注解,不然会产生不可控的错误
这是用于修饰Bean的一个注解。它最主要是让你的代码具有扩展性,如自带的redis自动装配、neo4j自动装配。
当外部出现多个相同类型的bean时,spring会为我们选择一个不带有conditionalOnMissingBean修饰的bean。也就是说这个修饰注解的目的是为我们提供一个默认的bean
在springboot3+中org.springframework.boot.autoconfigure.AutoConfiguration.imports提供了相关会进行自动装配的默认bean
@ConditionalOnProperty
这个用于配置文件来决定是否加载某一个bean。以下是文心一言提供的一个例子
@Service @ConditionalOnProperty(name = "myapp.feature.enabled", havingValue = "true") public class MyService { // 服务实现代码 }
只有在myapp.feature.enable设置为true的时候,这个类才会被spring容器创建并管理,否则不会创建。在实习时,我的项目中的定时任务等等一系列不是必须启动的项目中都添加了类似的效果,我感觉他们的实现方法也是如此。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
2023-09-02 假期小结8XML之LXML