欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中@Autowired與@Resource的區(qū)別小結(jié)

 更新時(shí)間:2025年01月20日 09:05:39   作者:coding俠客  
本文主要介紹了SpringBoot中@Autowired與@Resource的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

最近接手了離職同事負(fù)責(zé)的業(yè)務(wù),在處理一個(gè)線上工單的時(shí)候,看了下歷史邏輯,在閱讀他們寫(xiě)的代碼時(shí),發(fā)現(xiàn)他們竟然把@Autowired和@Resource注解混用。今天就借此機(jī)會(huì)聊聊SpringBoot項(xiàng)目中這兩者之間的區(qū)別。

1. 注解來(lái)源

  • @Autowired:是Spring框架提供的注解。IOC特性的核心注解之一。
  • @Resource:是Java的標(biāo)準(zhǔn)注解,屬于Java EE 規(guī)范(JSR-250)。

2. 注入方式

  • @Autowired:默認(rèn)按類(lèi)型進(jìn)行注入。如果業(yè)務(wù)場(chǎng)景比較復(fù)雜,一個(gè)接口有多個(gè)實(shí)現(xiàn)類(lèi)的話,可以結(jié)合@Qualifier注解指定具體的bean。如:
@Service
public class SomeService {
    @Autowired
    @Qualifier("userServiceImpl1")
    private UserService userService1;
    
    @Autowired
    @Qualifier("userServiceImpl2")
    private UserService userService2;
    // 業(yè)務(wù)邏輯
}
  • @Resource:默認(rèn)按名稱(chēng)進(jìn)行注入,即name屬性。如果name屬性沒(méi)有指定,則按類(lèi)型進(jìn)行注入。
@Service
public class SomeService {
    @Resource
    private UserService userService;
    // 業(yè)務(wù)邏輯
}

在這種情況下,Spring 會(huì)嘗試查找名稱(chēng)為 userService 的 bean。如果找不到按名稱(chēng)匹配的 bean,它會(huì)再?lài)L試按類(lèi)型進(jìn)行匹配。如果按類(lèi)型匹配也找不到唯一的 bean,就會(huì)拋異常。

用一句話總結(jié)就是:@Autowired相當(dāng)于是@Resource的子集。

3. 依賴(lài)檢查

  • @Autowired:默認(rèn)情況下,它要求依賴(lài)的 bean 必須存在于容器中。如果找不到匹配的 bean,Spring 會(huì)拋出 NoSuchBeanDefinitionException 異常??梢酝ㄟ^(guò)將 required 屬性設(shè)置為 false 來(lái)改變這種行為,使依賴(lài)變?yōu)榭蛇x的,這個(gè)時(shí)候注入的bean就是null。如:
@Service
public class SomeService {
    @Autowired(required = false)
    private UserService userService;
    // 業(yè)務(wù)邏輯
}
  • @Resource:沒(méi)有類(lèi)似 required 這樣明確的屬性來(lái)控制依賴(lài)是否必須存在。當(dāng)按名稱(chēng)或者類(lèi)型無(wú)法找到匹配的 bean 時(shí),會(huì)拋出NameNotFoundException 或 NullPointerException 異常。

4. 使用場(chǎng)景選擇

  • @Resource更適合在需要嚴(yán)格按名稱(chēng)注入的場(chǎng)景下使用。
    在 Java EE 環(huán)境中更常見(jiàn),因?yàn)樗?Java EE 標(biāo)準(zhǔn)。
  • @Autowired是 Spring 生態(tài)系統(tǒng)中最常用的依賴(lài)注入方式。對(duì)于 Spring 生態(tài)系統(tǒng)的開(kāi)發(fā)者來(lái)說(shuō),使用頻次很高。特別是在處理復(fù)雜的依賴(lài)關(guān)系和需要靈活配置的場(chǎng)景下,通過(guò)結(jié)合 @Qualifier 注解,可以實(shí)現(xiàn)精準(zhǔn)的依賴(lài)注入。

當(dāng)然,本人也更喜歡使用@Autowired。

到此這篇關(guān)于SpringBoot中@Autowired與@Resource的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot @Autowired與@Resource內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?泛型超詳細(xì)入門(mén)講解

    Java?泛型超詳細(xì)入門(mén)講解

    這篇文章主要介紹了Java基礎(chǔ)泛型詳情,泛型是JDK5中引入的特性,它提供了編譯時(shí)類(lèi)型安全檢測(cè)機(jī)制,該機(jī)制允許在編譯時(shí)檢測(cè)到非法的類(lèi)型,下面文章的詳細(xì)介紹,需要的朋友可以參考一下
    2022-04-04
  • RestTemplate發(fā)送HTTP?POST請(qǐng)求使用方法詳解

    RestTemplate發(fā)送HTTP?POST請(qǐng)求使用方法詳解

    這篇文章主要為大家介紹了RestTemplate發(fā)送HTTP?POST請(qǐng)求的使用方法詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Spring中的spring-retry重試機(jī)制解析

    Spring中的spring-retry重試機(jī)制解析

    這篇文章主要介紹了Spring中的spring-retry重試機(jī)制解析,spring-retry可以通過(guò)注解,在不入侵原有業(yè)務(wù)邏輯代碼的方式下,優(yōu)雅的實(shí)現(xiàn)重處理功能,在spring-retry中,所有配置都是基于簡(jiǎn)單注釋的,需要的朋友可以參考下
    2024-01-01
  • Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解

    Java實(shí)現(xiàn)入?yún)?shù)據(jù)批量數(shù)據(jù)校驗(yàn)詳解

    在業(yè)務(wù)處理中一般入?yún)⑹菃螚l數(shù)據(jù),這樣數(shù)據(jù)校驗(yàn)比較容易,但是這種方法對(duì)于集合數(shù)據(jù)的校驗(yàn)不適用,下面我們就來(lái)看看如何對(duì)入?yún)?shù)據(jù)進(jìn)行批量數(shù)據(jù)校驗(yàn)吧
    2024-02-02
  • Java服務(wù)限流算法的6種實(shí)現(xiàn)

    Java服務(wù)限流算法的6種實(shí)現(xiàn)

    服務(wù)限流是指通過(guò)控制請(qǐng)求的速率或次數(shù)來(lái)達(dá)到保護(hù)服務(wù)的目的,本文主要介紹了Java服務(wù)限流算法的6種實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Spring在SingleTon模式下的線程安全詳解

    Spring在SingleTon模式下的線程安全詳解

    這篇文章主要介紹了Spring在SingleTon模式下的線程安全詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于Springboot的高校社團(tuán)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于Springboot的高校社團(tuán)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    本文將基于Springboot+Mybatis開(kāi)發(fā)實(shí)現(xiàn)一個(gè)高校社團(tuán)管理系統(tǒng),系統(tǒng)包含三個(gè)角色:管理員、團(tuán)長(zhǎng)、會(huì)員。文中采用的技術(shù)有Springboot、Mybatis、Jquery、AjAX、JSP等,感興趣的可以了解一下
    2022-07-07
  • SpringBoot @ConfigurationProperties使用詳解

    SpringBoot @ConfigurationProperties使用詳解

    這篇文章主要介紹了SpringBoot @ConfigurationProperties使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 一文了解SpringBoot是如何連接數(shù)據(jù)庫(kù)的

    一文了解SpringBoot是如何連接數(shù)據(jù)庫(kù)的

    Spring Boot提供了一系列的開(kāi)箱即用的功能和特性,使得開(kāi)發(fā)人員可以快速構(gòu)建和部署應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于SpringBoot是如何連接數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲

    Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論