@Autowired注解与@Qualifier注解搭配使用----解决多实现选择注入问题
Posted matd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Autowired注解与@Qualifier注解搭配使用----解决多实现选择注入问题相关的知识,希望对你有一定的参考价值。
问题:当一个接口实现由两个实现类时,只使用@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注解搭配使用----解决多实现选择注入问题的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot的业务层注解(@Resource@Autowired与@Qualifier)
@Resource@Autowired@Qualifier的注解注入及区别
整理:spring注解 @Autowired @Qualifier @Resource
Spring注解驱动开发第20讲——使用@Autowired@Qualifier@Primary这三大注解自动装配组件,你会了吗?
@Autowired @Resource @Qualifier
Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的