详解@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中事半功倍的工具类合集分享

    SpringBoot中事半功倍的工具类合集分享

    在日常开发中经常有这样那样的小功能需要实现,这些一般会作为工具类存在,在项目中有一些通用的功能,Spring内置了需要工具类,而且经过了大量的验证,可以在开发中助你一臂之力,快跟随小编一起来看看吧
    2023-02-02
  • spring Mvc配置xml使ResponseBody返回Json的方法示例

    spring Mvc配置xml使ResponseBody返回Json的方法示例

    这篇文章主要给大家介绍了关于spring Mvc配置xml使ResponseBody返回Json的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • java并发编程synchronized底层实现原理

    java并发编程synchronized底层实现原理

    这篇文章主要介绍了java并发编程synchronized底层实现原理
    2022-02-02
  • 在Java中实现让线程按照自己指定的顺序执行

    在Java中实现让线程按照自己指定的顺序执行

    这篇文章主要介绍了在Java中实现让线程按照自己指定的顺序执行,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java中使用RediSearch实现高效的数据检索功能

    Java中使用RediSearch实现高效的数据检索功能

    RediSearch是一款构建在Redis上的搜索引擎,它为Redis数据库提供了全文搜索、排序、过滤和聚合等高级查询功能,本文将介绍如何在Java应用中集成并使用RediSearch,以实现高效的数据检索功能,感兴趣的朋友跟着小编一起来看看吧
    2024-05-05
  • PageHelper在springboot中的使用方式

    PageHelper在springboot中的使用方式

    这篇文章主要介绍了PageHelper在springboot中的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Quartz实现JAVA定时任务的动态配置的方法

    Quartz实现JAVA定时任务的动态配置的方法

    这篇文章主要介绍了Quartz实现JAVA定时任务的动态配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • springboot yml配置文件使用@project.xxxx@启动报错Do not use @ for indentation问题

    springboot yml配置文件使用@project.xxxx@启动报错Do not 

    这篇文章主要介绍了springboot yml配置文件使用@project.xxxx@启动报错Do not use @ for indentation问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • LeetCode程序员面试题之递归乘法

    LeetCode程序员面试题之递归乘法

    在Java中,递归乘法是一种简单而有效的方法,可以用来计算两个数字的乘积。它的基本思想是:如果第一个数字是0,则乘积为0;如果第一个数字是1,则乘积为第二个数字;其他情况,则通过将第一个数字减1,并将第二个数字与自身相乘,来实现递归乘法。
    2023-02-02
  • Springboot基于Redisson实现Redis分布式可重入锁源码解析

    Springboot基于Redisson实现Redis分布式可重入锁源码解析

    这篇文章主要介绍了Springboot基于Redisson实现Redis分布式可重入锁,本文通过案例源码分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03

最新评论