使用@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")
注解来指明名称