SpringBoot中接口有多個實現時,通過註解去選擇合適的實現Bean

根據問題現狀,創建好對應的代碼格式,如下圖:

service包下的接口StudentService和它的兩個實現類BoyStudentImpl和GirlStudentImpl分別如下圖所示:

在controller下要引用這個service,一般是如下圖方式去引用:

@Autowired
StudentService service;

但是因爲目前一個接口不止一個實現類,所以之前的引用方式在這種情況下不適合,下面展示在這種情況下一個controller中引用多個bean:

第一種,service對象名要和beanName相同:

如果不相同的話會有如下的提示:

第二種,@Autowired + @Qualifier配合使用,如下圖:

同時發現這種方式會覆蓋第一種方式,service選的bean以Qualifier中的value爲準。

第三種,使用@Resource註解,如下圖

與第二種方式相比,效果一樣。

目前根據使用情況,整理了3種方式,希望對大家有幫助

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章