使用@Autowired报错Could not autowire. There is more than one bean of 'ProductClient' type.

使用@Autowired Could not autowire. There is more than one bean of ‘ProductClient’ type报错解决

解决方法:

1.将@Autowired注解替换成@Resource(name="")注解即可,name:中填写你想注入的bean对象名称

@Resource
private ProductClient productClient;

2.添加@Qualifier("")注解 “”:中填写你想注入的bean对象名称

@Qualifier("productClient")
@Autowired
private ProductClient productClient;

注意 name与""中所填内容均为需要注入对象的类名称或者指定的名称,如下:

@service ("pfProductservicel")
public class PfProductservicell implements IPfproductservicehtups
错误分析

这里首先要简短的说明一下@Autowired@Resource(name="")的区别,两个注解都是用于实现Spring中ioc功能,也就是注入对象,但是两者也有一个本质的区别,@Autowired对象是通过对象类型注入对象的,如:

//这里会从Spring容器中搜索属于ProductClient类型的对象,包括实现它的一些对象
@Autowired
private ProductClient productClient;

所以,如果ProductClient接口下实现了多个对象,@Autowired就不能准确的指定到底是哪一个实现类,所以会报如上错误;
如上两种解决方案都是为了指明到底注入哪一个对象,所以最后还需要在需要注入的对象上加上@service ("productClient")注解来指明名称

你可能感兴趣的:(Exception)