@Autowired注解描述属性时,系统底层会基于属性类型从spring容器查找对象,假如有多个
类型都满足注入要求,则还会基于属性名进行查找,检测哪个bean名字与属性名相同,
假如有相同的则,直接取相同进行注入,没有则抛出异常。
相同的类型的接口有多个实现类报出org.springframework.beans.factory.NoUniqueBeanDefinitionException
异常
解决方法:1。使用```
@Qualifier("实现类名")
2.`private 接口类 实现类名`
3.将实现类起名
`@Component("起的名")`
@Autowired由spring框架定义,用于描述类中属性或相关方法(构造方法,set方法)。
Spring框架在项目运行时假如发现由他管理的Bean对象中有使用@Autowired注解描述的属性或方法,
可以按照指定规则为属性赋值(DI)。
其基本规则是:首先要检测容器中是否有与属性或方法参数类型相匹配的对象,假如有并且只有一个则直接注入。
其次,假如检测到有多个,还会按照@Autowired描述的属性或方法参数名查找是否有名字匹配的对象,
有则直接注入,没有则抛出异常。最后,假如我们有明确要求,必须要注入类型为指定类型,
名字为指定名字的对象还可以使用@Qualifier注解对其**属性或参数**进行描述(此注解必须配合@Autowired注解使用)
当描述构造方法时,会根据构造方法的参数类型去匹配