首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

同一类型的@ConditionalOnMissingBean和@ConditionalOnBean

@ConditionalOnMissingBean和@ConditionalOnBean是Spring框架中的注解,用于条件化地装配Bean。

@ConditionalOnMissingBean注解表示当容器中不存在指定类型的Bean时,才会装配被注解的Bean。它可以用于确保只有在没有其他Bean实现时才会创建该Bean。这个注解可以应用于类、方法和构造函数上。

@ConditionalOnBean注解表示只有当容器中存在指定类型的Bean时,才会装配被注解的Bean。它可以用于确保只有在存在特定Bean时才会创建该Bean。这个注解也可以应用于类、方法和构造函数上。

这两个注解可以用于实现条件化的Bean装配,根据不同的条件选择性地创建Bean。它们可以帮助开发人员根据应用程序的需求动态地配置和装配Bean。

应用场景:

  1. 在多个实现类中选择性地装配某个Bean。
  2. 根据不同的环境条件选择性地装配某个Bean。
  3. 在某些特定的场景下,根据条件动态地创建Bean。

推荐的腾讯云相关产品和产品介绍链接地址:

  1. 云服务器(ECS):https://cloud.tencent.com/product/cvm
  2. 云数据库MySQL版(CDB):https://cloud.tencent.com/product/cdb_mysql
  3. 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  4. 云存储(COS):https://cloud.tencent.com/product/cos
  5. 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke

请注意,以上链接仅为示例,实际使用时应根据具体需求选择适合的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Spring Boot 源码学习】OnBeanCondition 详解

通过查看 getMatchOutcome 方法源码,可以看到针对 ConditionalOnBean 注解、ConditionalOnSingleCandidate 注解 ConditionalOnMissingBean...true,表示存在指定注解类型。...2.3 ConditionalOnMissingBean 注解处理我们继续查看 ConditionalOnMissingBean 注解处理逻辑源码: if (metadata.isAnnotated...ConfigurableListableBeanFactory 提供了添加、移除、注册查找 bean 方法,以及设置获取 bean 属性值功能。它还支持bean 后处理事件传播。...然后,使用迭代器遍历这个集合,如果集合中某个元素在被忽略类型集合中,就将其从迭代器中移除。最后,如果 typeMatches 集合为空,则记录未匹配类型;否则,记录匹配类型

14231

为什么@Conditional会失效?

、@ConditionalOnSingleCandidate@ConditionalOnMissingBean三个条件注解逻辑判定,继续分析@ConditionalOnBean,就是检查容器中是否有符合条件...@Configuration类里边@Bean@ConditionalOnBean注解方法解析时一起分析。...类并添加到conditions备用,之所以这里是列表,是因为可能@Bean标注方法上除了@ConditionalOnBean还有@ConditionalOnMissingBean等多个条件注解 对条件注解支持类...五、解决方案 想要解决上述问题,要保证配置类解析和加载在依赖类之后,也就是使用@ConditionalOnBean注解条件判定注册必须要在依赖类之后,可以参考一下方案。...注解 @Bean 方法移到自动装配类中,这样就可以保证自动装配类中 Bean 先被加载注册,满足 @ConditionalOnBean 条件要求。

46520

Spring Boot 自动配置一篇概览

>[] value() default {}; String[] name() default {}; } 注解元数据是通过 ASM 处理,所以可以通过 value 属性传递 Class 类型参数...无效情景: @Bean 注解方法,其返回值类型为类目标条件类本身。在方法上条件判正之前,JVM 已经加载了相关类,并且很可能会执行相关方法引用,如果类不存在的话,就会导致失败。...作用于 @Bean 注解方法时,默认目标 Bean 类型为方法返回值类型。...@ConditionalOnBeanConditionalOnMissingBean 条件注解 @Configuration 类依然会被创建,只不是不会被注册。...当使用 @Bean 注解方法时,返回值最好使用具体类,而不要使用接口。这一点,对于使用基于 Bean 类型判定条件注解时尤为重要。

21760

助力SpringBoot自动配置条件注解ConditionalOnXXX分析--SpringBoot源码(三)

其中matches方法中有两个参数,参数类型分别是ConditionContextAnnotatedTypeMetadata,这两个参数非常重要。...同时是OnBeanCondition是@ConditionalOnBean,@ConditionalOnSingleCandidateConditionalOnMissingBean条件类。...BeanSearchSpec对象中 // 注意BeanSearchSpec是一个静态内部类,用来存储@ConditionalOnBean@ConditionalOnMissingBean注解属性值...方法分别处理了标注@ConditionalOnBean,@ConditionalOnSingleCandidate@ConditionalOnMissingBean注解情况,分别对应上面代码注释(...,其中有SERVLET,REACTIVEANY类型,其中ANY表示了SERVLET或REACTIVE类型 switch (deduceType(metadata)) { // SERVLET类型

1.2K00

SpringCloud升级之路2020.0.x版-22.Spring Cloud LoadBalancer核心源码

这个负载均衡器实现很简单,有一个原子类型 AtomicInteger position,从 ServiceInstanceListSupplier 中读取所有的服务实例列表,然后对于 position...例如: LoadBalancerClientConfiguration @Bean @ConditionalOnBean(ReactiveDiscoveryClient.class) @ConditionalOnMissingBean...通过 DiscoveryClient 提供实例 .withDiscoveryClient() //开启缓存 .withCaching() .build(context); } @Bean @ConditionalOnBean...return ServiceInstanceListSupplier.builder() //通过 DiscoveryClient 提供实例 .withDiscoveryClient() //启用更倾向于同一个...provider //在 Bean 创建时候,进行载入,而不是注册时候 this.configurations = configurations; } @ConditionalOnMissingBean

36630

超级详细Spring Boot 注解总结

大家好,我是狼王,一个爱打球程序员 日常编程中我相信大家肯定都用过spring,也用过spring注解,哪怕面试时候也经常会被问到一些springspring boot注解作用含义等,那么这篇就带大家来看看超级详细...---- 我们先来看看本篇会讲到注解,大家可以先看着注解想一想这个是干啥用,什么场景会用到,有哪些是你不知道,带着你答案疑问再往下看!...7、@ConditionalOnBean 组合 @Conditional 注解,当容器中有指定 Bean 才开启配置。...8、@ConditionalOnMissingBean 组合 @Conditional 注解, @ConditionalOnBean 注解相反,当容器中没有指定 Bean 才开启配置。...11、@ConditionalOnWebApplication 组合 @Conditional 注解,当前项目类型是 WEB 项目才开启配置。 当前项目有以下 3 种类型

79221

SpringBootCache源码解析:Cache自动配置

} 枚举类 CacheType 中定义了以上支持缓存类型,而且上面的缓存类型默认是按照优先级从前到后顺序排列。...@Configurat ion(proxyBeanMethods = false) @ConditionalOnBean(Cache . class) @ConditionalOnMissingBean...,@ConditionalOnBean 指定当 Cache Bean存在时进行实例化操作,@ConditionalOnMissingBean 指定当 CacheManager Bean 不存在时进行实例化操作...Binder 进行指定属性绑定,然后通过绑定结果( BindResult)进行判断:如果判断结果是未绑定,则直接返回条件匹配;否则,判断绑定缓存类型与所需缓存类型是否相等,如果相等则返回条件匹配...集合来实现,它提供了设置缓存集合获取缓存集合方法。

1.1K30

SpringCloud升级之路-2020.0.x - 6.使用 Spring Cloud LoadBalancer(1)

相关核心实现是 @LoadBalancerClient @LoadBalancerClients 这两个注解,以及 NamedContextFactory.Specification 实现 LoadBalancerClientSpecification...这个负载均衡器实现很简单,有一个原子类型 AtomicInteger position,从 ServiceInstanceListSupplier 中读取所有的服务实例列表,然后对于 position...例如: LoadBalancerClientConfiguration @Bean @ConditionalOnBean(ReactiveDiscoveryClient.class) @ConditionalOnMissingBean...return ServiceInstanceListSupplier.builder() //通过 DiscoveryClient 提供实例 .withDiscoveryClient() //启用更倾向于同一个...provider //在 Bean 创建时候,进行载入,而不是注册时候 this.configurations = configurations; } @ConditionalOnMissingBean

1.2K20
领券