详解@ConditionalOnMissingBean注解的作用

 更新时间:2023年10月11日 08:35:43   作者:余生海  
这篇文章主要介绍了详解@ConditionalOnMissingBean注解的作用,@ConditionalOnMissingBean,它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的bean,就不会成功,它会保证你的bean只有一个,需要的朋友可以参考下

@ConditionalOnMissingBean注解

@ConditionalOnMissingBean,它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个,当你注册多个相同的bean时,会出现异常,以此来告诉人员。

@Component
public class AutoConfig {
  @Bean
  public AConfig aConfig() {
    return new AConfig("lind");
  }
  @Bean
  @ConditionalOnMissingBean(AMapper.class)
  public AMapper aMapper1(AConfig aConfig) {
    return new AMapperImpl1(aConfig);
  }
  @Bean
  public AMapper aMapper2(AConfig aConfig) {
    return new AMapperImpl2(aConfig);
  }
}

因为在aMapper1上面标识了AMapper类型的bean只能有一个实现 @ConditionalOnMissingBean(AMapper.class),所以在进行aMapper2注册时,系统会出现上面图上的异常,这是正常的。

当我们把 @ConditionalOnMissingBean(AMapper.class) 去掉之后,你的bean可以注册多次,这时需要用的@Primary来确定你要哪个实现;一般来说,对于自定义的配置类,我们应该加上@ConditionalOnMissingBean注解,以避免多个配置同时注入的风险。

@Primary标识哪个是默认的bean

  @Bean
  public AMapper aMapper1(AConfig aConfig) {
    return new AMapperImpl1(aConfig);
  }
  @Bean
  @Primary
  public AMapper aMapper2(AConfig aConfig) {
    return new AMapperImpl2(aConfig);
  }

到此这篇关于详解@ConditionalOnMissingBean注解的作用的文章就介绍到这了,更多相关@ConditionalOnMissingBean注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于SpringBoot和Vue实现分片上传系统

    基于SpringBoot和Vue实现分片上传系统

    最近想做一个关于文件上传的个人小网盘,一开始尝试使用了OSS的方案,但是该方案对于大文件来说并不友好,所以开始尝试分片上传方案的探索,接下来小编给大家详细的介绍一下如何基于SpringBoot和Vue实现分片上传系统,需要的朋友可以参考下
    2023-12-12
  • Java方法反射实现原理详解

    Java方法反射实现原理详解

    这篇文章主要为大家详细介绍了Java方法反射的实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 一文详解Spring AOP的配置与使用

    一文详解Spring AOP的配置与使用

    面向切面编程(俗称AOP)提供了一种面向对象编程(俗称OOP)的补充,面向对象编程最核心的单元是类(class),然而面向切面编程最核心的单元是切面(Aspects)。本文就来和大家聊聊AOP的配置与使用,感兴趣的可以了解一下
    2022-11-11
  • 详解Java设计模式之单例模式

    详解Java设计模式之单例模式

    这篇文章主要为大家详细介绍了Java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • RabbitMQ 3.9.7 镜像模式集群与Springboot 2.5.5 整合

    RabbitMQ 3.9.7 镜像模式集群与Springboot 2.5.5 整合

    今天我们来聊聊 RabbitMQ 3.9.7 镜像模式集群与Springboot 2.5.5 整合,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-10-10
  • 使用java web 在jsp文件及Class中连接MySQL和SQLserver 的驱动方法

    使用java web 在jsp文件及Class中连接MySQL和SQLserver 的驱动方法

    这篇文章主要介绍了使用java web 在jsp文件及Class中连接MySQL和SQLserver的驱动方法的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • Java详解swagger2如何配置使用

    Java详解swagger2如何配置使用

    编写和维护接口文档是每个程序员的职责,根据Swagger2可以快速帮助我们编写最新的API接口文档,再也不用担心开会前仍忙于整理各种资料了,间接提升了团队开发的沟通效率
    2022-06-06
  • 详解SpringBoot中文件上传大小限制问题的解决方案

    详解SpringBoot中文件上传大小限制问题的解决方案

    在开发Web应用程序时,文件上传是一个常见的需求,本文将详细介绍如何分析和解决Spring Boot文件上传大小限制问题,并提供多种配置方式,希望对大家有所帮助
    2025-07-07
  • 在Spring中实现异步处理的步骤和代码演示

    在Spring中实现异步处理的步骤和代码演示

    在Spring中实现异步处理通常涉及到@Async注解,通过步骤和代码演示,可以在Spring应用程序中实现异步处理,记住要根据你的应用程序的实际需求来调整线程池和异步方法的设计,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • netty服务端处理请求联合pipeline分析

    netty服务端处理请求联合pipeline分析

    这篇文章主要为大家介绍了netty服务端处理请求联合pipeline示例分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论