@Autowired注解描述屬性時,系統底層會基於屬性類型從spring容器查找對象,假如有多個
類型都滿足注入要求,則還會基於屬性名進行查找,檢測哪個bean名字與屬性名相同,
假如有相同的則,直接取相同進行注入,沒有則拋出異常。
相同的類型的接口有多個實現類報出org.springframework.beans.factory.NoUniqueBeanDefinitionException
異常
解決方法:1。使用```
@Qualifier("實現類名")
2.`private 接口類 實現類名`
3.將實現類起名
`@Component("起的名")`
@Autowired由spring框架定義,用於描述類中屬性或相關方法(構造方法,set方法)。
Spring框架在項目運行時假如發現由他管理的Bean對象中有使用@Autowired注解描述的屬性或方法,
可以按照指定規則為屬性賦值(DI)。
其基本規則是:首先要檢測容器中是否有與屬性或方法參數類型相匹配的對象,假如有並且只有一個則直接注入。
其次,假如檢測到有多個,還會按照@Autowired描述的屬性或方法參數名查找是否有名字匹配的對象,
有則直接注入,沒有則拋出異常。最后,假如我們有明確要求,必須要注入類型為指定類型,
名字為指定名字的對象還可以使用@Qualifier注解對其**屬性或參數**進行描述(此注解必須配合@Autowired注解使用)
當描述構造方法時,會根據構造方法的參數類型去匹配