欢迎光临散文网 会员登陆 & 注册

Spring中出现NoUniqueBeanDefinitionException的解决方法

2021-10-14 20:49 作者:向上生长之路  | 我要投稿

使用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中出现NoUniqueBeanDefinitionException的解决方法的评论 (共 条)

分享到微博请遵守国家法律