Spring中的@Qualifier注解和@Resource注解區(qū)別解析
@Qualifier和@Resource注解
在傳統(tǒng)的MVC實(shí)現(xiàn)里面Spring boot 的controller-service-Impl-Dao-db controller層調(diào)用service接口層里面的方法大多使用@Autowired自動(dòng)注入注解
實(shí)際上調(diào)用Impl的具體實(shí)現(xiàn),但是當(dāng)一個(gè)接口的方法,對應(yīng)多個(gè)實(shí)現(xiàn)的時(shí)候,怎么區(qū)分到底注入哪一個(gè)呢
答案是@Qualifier注解和@Resource注解
- @Qualifier注解的用處:當(dāng)一個(gè)接口有多個(gè)實(shí)現(xiàn)的時(shí)候,為了指名具體調(diào)用哪個(gè)類的實(shí)現(xiàn)
- @Resource注解:可以通過 byName命名 和 byType類型的方式注入, 默認(rèn)先按 byName的方式進(jìn)行匹配,如果匹配不到,再按 byType的方式進(jìn)行匹配。 可以為 @Service和@Resource 添加 name 這個(gè)屬性來區(qū)分不同的實(shí)現(xiàn)
例如:
@Service public interface myService{ public int findSomeone(); } //第一種實(shí)現(xiàn) @Service("myServiceImpl1") public class myServiceImpl1 implements myService{ @Overide public int findSomeone() { //根據(jù)身份找 } } //第二種實(shí)現(xiàn) @Service("myServiceImpl2") public class myServiceImpl2 implements myService{ @Override public int findSomeone() { //根據(jù)名字找 } }
在controller層,
采用
1、@Autowired和@Qualifier(“myServiceImpl1”)結(jié)合;
或者
2、@Resource(name = “myServiceImpl2”); 兩種方式指定要注入的是接口的具體是哪個(gè)實(shí)現(xiàn)類
@Controller public class UserController{ @Autowired @Qualifier("myServiceImpl1") public myService myservice; @Resource(name = "myServiceImpl2") public myService myservice2; @RequestMapping("/findSomeone") public User findSomeone(@RequestParam("xx") int xx) { User user = myservice.findSomeone(xx); return user; } }
到此這篇關(guān)于Spring中的@Qualifier注解和@Resource注解區(qū)別解析的文章就介紹到這了,更多相關(guān)@Qualifier和@Resource注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 仿天貓服裝商城系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)仿天貓服裝商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11詳解Java的MyBatis框架中的緩存與緩存的使用改進(jìn)
很多人在使用MyBatis的緩存后經(jīng)常會(huì)遇到MySQL分頁查詢的顯示問題,針對于此,這里我們就來詳解Java的MyBatis框架中的緩存與緩存的使用改進(jìn),首先來回顧一下MyBatis的緩存機(jī)制與執(zhí)行:2016-06-06java 1.8 動(dòng)態(tài)代理源碼深度分析
下面小編就為大家?guī)硪黄猨ava 1.8 動(dòng)態(tài)代理源碼深度分析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06解讀靜態(tài)資源訪問static-locations和static-path-pattern
本文主要介紹了Spring Boot中靜態(tài)資源的配置和訪問方式,包括靜態(tài)資源的默認(rèn)前綴、默認(rèn)地址、目錄結(jié)構(gòu)、訪問路徑以及靜態(tài)資源處理器的工作原理,通過配置文件和實(shí)現(xiàn)`WebMvcConfigurer`接口,可以自定義靜態(tài)資源目錄和訪問前綴2025-01-01Java中正則表達(dá)式split()特殊符號(hào)使用詳解
這篇文章主要介紹了Java中正則表達(dá)式split()特殊符號(hào)使用詳解, 文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07SpringHateoas超媒體API之資源表示與鏈接關(guān)系詳解
本文將深入探討Spring HATEOAS的核心概念、資源表示方式以及如何構(gòu)建豐富的超媒體API,幫助開發(fā)者創(chuàng)建更具自描述性和可發(fā)現(xiàn)性的Web服務(wù),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04SpringMVC JSON數(shù)據(jù)交互及RESTful支持實(shí)現(xiàn)方法
這篇文章主要介紹了SpringMVC JSON數(shù)據(jù)交互及RESTful支持實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06字節(jié)二面SpringBoot可以同時(shí)處理多少請求
這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時(shí)處理多少請求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07