码迷,mamicode.com
首页 > 其他好文 > 详细

@Autowired注解与@Qualifier注解搭配使用----解决多实现选择注入问题

时间:2019-07-03 18:32:35      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:cto   match   text   unique   except   err   exception   实现   bean   

问题:当一个接口实现由两个实现类时,只使用@Autowired注解,会报错,如下图所示

实现类1

技术图片

 实现类2

技术图片

 controller中注入

技术图片

然后启动服务报错,如下所示:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘orderController‘: Unsatisfied dependency expressed through field ‘productOrderService‘; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘net.xdclass.order_service.service.ProductOrderService‘ available: expected single matching bean but found 2: service1,service2

原因是存在两个实例service1,service2,系统不知道注入哪个一个实例,其实idea工具已经飘红提示了存在两个实例,所以这里我们就需要用到@Qualifier注解来指明注入的实例,如下图所示

技术图片

这样就ok了,idea飘红提示也没有了,启动也正常

补充:我们也可以用@Resource(name="service1")如图所示

技术图片

 

@Autowired注解与@Qualifier注解搭配使用----解决多实现选择注入问题

标签:cto   match   text   unique   except   err   exception   实现   bean   

原文地址:https://www.cnblogs.com/matd/p/11128084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!