美文网首页
Spring中出现NoUniqueBeanDefinitionE

Spring中出现NoUniqueBeanDefinitionE

作者: 向上生长之路 | 来源:发表于2021-10-14 20:49 被阅读0次

    使用Spring开发框架,有时会遇到同一个接口有多个实现类的情况,这时候在代码中依赖注入该接口的话,Spring就会报错:org.springframework.beans.factory.NoUniqueBeanDefinitionException

    • Spring 版本 5.3.6

    错误重现

    1.创建接口类,暴露name方法用来区分具体的实现类



    2.创建接口对应的两个实现类




    3.使用@Resource注解注入接口

    按照以上操作,启动工程就会发现控制台报错了


    解决方案

    • 可以通过设置@Resource注解name参数的值,指定注入的实例名,来明确Spring该注入哪个类


      默认情况下,这里name的值即为Spring的IOC容器中Bean的驼峰标识名称
    • 还可以通过@Primary注解,标记在具体的实现类中,表明当同一个接口存在多个实现类时,优先使用该注解标记的类

    编写控制器方法来验证注入的类



    启动工程访问控制器,可以看到对应的name值,符合我们的预期~


    完整测试工程参考:https://github.com/netbuffer/spring-boot-demo

    相关文章

      网友评论

          本文标题:Spring中出现NoUniqueBeanDefinitionE

          本文链接:https://www.haomeiwen.com/subject/qpbuoltx.html