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