@Autowired自動裝配接口時存在多個實現(xiàn)的處理過程
@Autowired自動裝配接口存在多個實現(xiàn)
class ImageDataService extends DataDao添加注解@Service(value=“aaaDataService’”)
當我們需要這個類時 bean對應(yīng)的name為aaaDataService
當DataDao有多個現(xiàn)實時,下例代碼編譯時會報錯
@Autowired private DataService dataService;
1、@Resource注解
@Resource(name="aaaDataService") private DataService dataService;
@Resource的作用相當于@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入。
2、@Qualifier注解
@Autowired
@Qualifier("aaaDataService")
private DataService dataService;
3、默認值
當class ImageDataService沒有特殊標識beanName時(@Service)
變量名用imageDataService而不是dataService。
通常情況下@Autowired是通過byType的方法注入的,可是在多個實現(xiàn)類的時候,byType的方式不再是唯一,而需要通過byName的方式來注入,而這個name默認就是根據(jù)變量名來的。
@Autowired
private DataService voiceDataService;
@Autowired
private DataService textDataService;
@Autowired
private DataService aaaDataService;
@Autowired
@Qualifier(value = "aaaDataService")
private DataService videoDataService;
@Test
public void test(){
System.out.println(voiceDataService.getClass().toString());
System.out.println(textDataService.getClass().toString());
System.out.println(videoDataService.getClass().toString());
}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud實戰(zhàn)之Feign聲明式服務(wù)調(diào)用
這篇文章主要介紹了SpringCloud實戰(zhàn)之Feign聲明式服務(wù)調(diào)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
springboot整合netty-mqtt-client實現(xiàn)Mqtt消息的訂閱和發(fā)布示例
本文主要介紹了springboot整合netty-mqtt-client實現(xiàn)Mqtt消息的訂閱和發(fā)布示例,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
SpringCloud使用spring-boot-devtools 進行熱部署的實現(xiàn)
本文主要介紹了Spring Cloud使用spring-boot-devtools進行熱部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-10-10

