" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring@Autowired與@Resource的區(qū)別有哪些

 更新時(shí)間:2022年02月17日 17:20:01   作者:蟲鏈Java Library  
這篇文章主要為大家詳細(xì)介紹了@Autowired與@Resource的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

@Autowired與@Resource都是我們?nèi)粘i_發(fā)中常用的兩個(gè)注解,那么它們之間究竟有何區(qū)別呢?

開始講解之前我們首先要明白一點(diǎn),這個(gè)兩個(gè)注解都是用來完成組件的裝配的,即利用依賴注入(DI),完成對(duì)ioc容器當(dāng)中各個(gè)組件之間依賴的裝配賦值。

@Autowired注解

來源:@Autowired為Spring提供的注解,需要導(dǎo)入包org.springframework.beans.factory.annotation.Autowired

說明:@Autowired采取的默認(rèn)策略為按照類型注入(by-type)。要求容器中一定要有這個(gè)類型的對(duì)象,如果沒有將會(huì)報(bào)錯(cuò),拋出異常。也可以通過設(shè)置可以@Autowired(required = false),來告訴容器,如果沒有可以不注入。

示例:

public class StudentController {
    @Autowired
    private StudentServer studentServer; 
}

如上代碼所示,這樣裝配會(huì)去spring容器中找到類型為StudentServer的類,然后將其注入進(jìn)來。這樣會(huì)產(chǎn)生一個(gè)問題,當(dāng)容器中有多個(gè)相同類型的對(duì)象,會(huì)造成無法選擇具體注入哪一個(gè)的情況從而導(dǎo)致報(bào)錯(cuò),這個(gè)時(shí)候我們可以通過@Qualifier("beanname"),來指定裝配哪個(gè)對(duì)象。

public class StudentController {
    @Autowired
    @Qualifier(name="studentServer")    
    private StudentServer studentServer; 
}

@Qualifier注解會(huì)告訴spring去裝配StudentServer對(duì)象。這個(gè)時(shí)候我們就可以成功注入正確的對(duì)象了。

@Resource注解

來源:@Resource注解由J2EE提供,需要導(dǎo)入包javax.annotation.Resource

說明:@Resource可以設(shè)置by-name(按名稱)和by-type(按類型)來進(jìn)行自動(dòng)裝配。如果沒指定則默認(rèn)按照ByName自動(dòng)注入。

示例

public class StudentController {
    @Resource  
    private StudentServer studentServer; 
}

沒有指定name,又沒有指定type,該注解會(huì)自動(dòng)按照by-name方式進(jìn)行裝配,如果匹配則自動(dòng)裝配。如果沒有匹配,則按照by-type進(jìn)行查找,如果都沒查找到,那么則拋出異常。

public class StudentController {
    @Resource(name="studentServer")  
    private StudentServer studentServer; 
}

指定了name,則從上下文中查找名稱(id)匹配的bean進(jìn)行裝配,找不到則拋出異常。

public class StudentController {
     @Resource(type="StudentServer")   
    private StudentServer studentServer; 
}

指定了type,則從上下文中找到類似匹配的唯一bean進(jìn)行裝配,找不到或是找到多個(gè),都會(huì)拋出異常。

public class StudentController {    @Resource(name="studentServer",type="StudentServer")      private StudentServer studentServer; }public class StudentController {
    @Resource(name="studentServer",type="StudentServer")  
    private StudentServer studentServer; 
}

同時(shí)指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋出異常。

總結(jié)

@Autowired是Spring的注解通過類型(type)來實(shí)現(xiàn)裝配Bean,也可以通過名稱(name)來裝配Bean(需要配合@Qualifier(“beanname”)使用)。依賴對(duì)象必須存在,如果要允許null值,可以設(shè)置它的required屬性為false @Autowired(required=false)。

@Resource是J2EE的注解是Java自已的東西使用@Resource可以減少代碼和Spring之間的耦合。它可以通過by-type來實(shí)現(xiàn)裝配Bean,也可以by-name進(jìn)行裝配,如果指定了則按照指定的進(jìn)行裝配,如果都沒指定的話先by-name 后by-type 也可以同時(shí)指定by-name與by-type。

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • spring boot過濾器FilterRegistrationBean實(shí)現(xiàn)方式

    spring boot過濾器FilterRegistrationBean實(shí)現(xiàn)方式

    這篇文章主要介紹了spring boot過濾器FilterRegistrationBean實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java編程思想對(duì)象的容納實(shí)例詳解

    Java編程思想對(duì)象的容納實(shí)例詳解

    這篇文章主要介紹了Java編程思想對(duì)象的容納實(shí)例詳解,內(nèi)容比較詳細(xì),涵蓋的東西也比較多,具有參考價(jià)值,需要的朋友了解下。
    2017-09-09
  • list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    list,set,map,數(shù)組之間的相互轉(zhuǎn)換詳細(xì)解析

    以下是對(duì)Java中l(wèi)ist,set,map,數(shù)組之間的相互轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • IDEA實(shí)現(xiàn) springmvc的簡(jiǎn)單注冊(cè)登錄功能的示例代碼

    IDEA實(shí)現(xiàn) springmvc的簡(jiǎn)單注冊(cè)登錄功能的示例代碼

    這篇文章主要介紹了IDEA實(shí)現(xiàn) springmvc的簡(jiǎn)單注冊(cè)登錄功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java調(diào)用CXF WebService接口的兩種方式實(shí)例

    Java調(diào)用CXF WebService接口的兩種方式實(shí)例

    今天小編就為大家分享一篇關(guān)于Java調(diào)用CXF WebService接口的兩種方式實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 深入了解JAVA 軟引用

    深入了解JAVA 軟引用

    這篇文章主要介紹了JAVA 軟引用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • spring boot異步(Async)任務(wù)調(diào)度實(shí)現(xiàn)方法

    spring boot異步(Async)任務(wù)調(diào)度實(shí)現(xiàn)方法

    在沒有使用spring boot之前,我們的做法是在配置文件中定義一個(gè)任務(wù)池,然后將@Async注解的任務(wù)丟到任務(wù)池中去執(zhí)行,那么在spring boot中,怎么來實(shí)現(xiàn)異步任務(wù)的調(diào)用了,下面通過本文給大家講解,需要的朋友參考下
    2018-02-02
  • Java多線程 ThreadLocal原理解析

    Java多線程 ThreadLocal原理解析

    這篇文章主要介紹了Java多線程 ThreadLocal原理,ThreadLoal 變量,線程局部變量,同一個(gè) ThreadLocal 所包含的對(duì)象,在不同的 Thread 中有不同的副本,下面文章也是圍繞Java多線程 ThreadLocal展開內(nèi)容,需要的朋友可以參考一下
    2021-10-10
  • SpringBoot整合JWT的入門指南

    SpringBoot整合JWT的入門指南

    JWT全稱是json web token,它將用戶信息加密到 token 里,服務(wù)器不保存任何用戶信息,服務(wù)器通過使用保存的密鑰驗(yàn)證 token 的正確性,只要正確即通過驗(yàn)證,這篇文章主要給大家介紹了關(guān)于SpringBoot整合JWT的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Java常見異常及處理方式總結(jié)

    Java常見異常及處理方式總結(jié)

    今天給大家?guī)淼氖荍ava的相關(guān)知識(shí),文章圍繞著Java異常展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

文昌市| 成武县| 工布江达县| 惠来县| 云龙县| 巴彦淖尔市| 封开县| 安宁市| 容城县| 上蔡县| 安顺市| 神池县| 株洲县| 宣威市| 巴东县| 多伦县| 伊宁市| 柞水县| 哈密市| 关岭| 县级市| 德安县| 广德县| 寿宁县| 汉沽区| 陇南市| 常宁市| 西盟| 永安市| 义马市| 台湾省| 广饶县| 五华县| 宾川县| 蒲城县| 河南省| 徐闻县| 井研县| 奉节县| 河西区| 乐平市|