spring boot autowired的注入規則


@Autowired注解描述屬性時,系統底層會基於屬性類型從spring容器查找對象,假如有多個
類型都滿足注入要求,則還會基於屬性名進行查找,檢測哪個bean名字與屬性名相同,
假如有相同的則,直接取相同進行注入,沒有則拋出異常。

相同的類型的接口有多個實現類報出org.springframework.beans.factory.NoUniqueBeanDefinitionException異常

解決方法:1。使用```
@Qualifier("實現類名")


2.`private 接口類 實現類名`

3.將實現類起名
`@Component("起的名")`


@Autowired由spring框架定義,用於描述類中屬性或相關方法(構造方法,set方法)。
Spring框架在項目運行時假如發現由他管理的Bean對象中有使用@Autowired注解描述的屬性或方法,
可以按照指定規則為屬性賦值(DI)。
其基本規則是:首先要檢測容器中是否有與屬性或方法參數類型相匹配的對象,假如有並且只有一個則直接注入。
其次,假如檢測到有多個,還會按照@Autowired描述的屬性或方法參數名查找是否有名字匹配的對象,
有則直接注入,沒有則拋出異常。最后,假如我們有明確要求,必須要注入類型為指定類型,
名字為指定名字的對象還可以使用@Qualifier注解對其**屬性或參數**進行描述(此注解必須配合@Autowired注解使用)
當描述構造方法時,會根據構造方法的參數類型去匹配


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM