@ConditionalOnBean 与Bean注册优先级

1.Spring Boot注册Bean多种方式,常见的有:直接注册(@SpringBootApplication)、自动配置(classpath:/META-INF/spring.factories)、启用组件(@Enable…)。

2.而直接注册、自动配置、启用组件中注册方式通常分为:扫描(@ComponentScan) 和 Java配置方式(@Bean)注册。
3.使用Spring Boot时会通常我们会使用 @ConditionalOnBean 做判断,依据某个Bean是否存在而决定是否注册另一个Bean,但由于Srping Boot Bean注册顺序的问题可能导致意外的情况发生。
4.Bean注册可简单理解为存在优先级梯队,在同一梯队或者向上梯队使用@ConditionalOnBean来决定是否注册Bean是可以的,但如果从上梯队向下梯队使用@ConditionalOnBean则会导致无法成功注册,本文介绍Bean注册顺序。

  • Bean注册优先级梯队
第一梯队如下:
1.1. 扫描的Bean,包括直接扫描、自动配置中扫描、启用组件中扫描的Bean:
    即扫描标注了 @Controller @Service @Repository @Component 的类
1.2. 直接的Java配置,即@SpringBootApplication直接覆盖的包下用@Bean注册的Bean

第二梯队如下:
2.1. 启用组件中的Java配置注册的Bean,即在@Enable...引入、而且使用@Bean注册的Bean

第三梯队如下:
3.1. 自动配置中的Java配置注册的Bean,即在自动配置中引入、而且使用@Bean注册的Bean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值