如題所述,當一個接口被多個子類實現時,Spring框架怎樣從容器中正確取出我們想要的實例呢?
(定義了CommonService接口,同時有個兩個子類實現了這個接口,同時兩個實現類上都加了@Service注解,表明在項目啟動時,這兩個實現類都會被維護到Spring容器中)
1.在需要被注入的實現類上加注解@Primary
比如現在我想在調用類中注入DefaultServiceImpl的實例,只需要在DefaultServcieImpl類上加@Primary注解即可。
2.在需要被注入的實例上的@Service中聲明實例的名稱,然后在@AutoWired注入的引用 映射到想要注入的名稱。
3.@AutoWired和@Qualifler配合使用,@Qualifler中 value 聲明需要注入的實現類類名
三種方式選一種實現即可。