亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring中@Autowired與@Resource的區(qū)別詳析

 更新時(shí)間:2021年10月21日 12:56:03   作者:每天都要進(jìn)步一點(diǎn)點(diǎn)  
@Autowired與@Resource都可以用來(lái)裝配bean,都可以寫(xiě)在字段上,或?qū)懺趕etter方法上,下面這篇文章主要給大家介紹了關(guān)于Spring中@Autowired與@Resource區(qū)別的相關(guān)資料,需要的朋友可以參考下

一、定義

  • @Autowired

對(duì)類(lèi)成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。

  • @Resource

在語(yǔ)義上被定義為通過(guò)其唯一的名稱(chēng)來(lái)標(biāo)識(shí)特定的目標(biāo)組件,其中聲明的類(lèi)型與匹配過(guò)程無(wú)關(guān)。

如果沒(méi)有明確指定名稱(chēng),則默認(rèn)名稱(chēng)是從字段名稱(chēng)或設(shè)置方法(get、set方法)派生的。 如果用在字段上,則采用字段名稱(chēng); 如果用在在setter方法,它采用其屬性名稱(chēng)(例如setProperty()方法,取property做為屬性名稱(chēng))。

二、區(qū)別

在Spring框架中,如果在Service層中需要注入其他依賴(lài)的對(duì)象,通常我們都會(huì)使用@Autowired或者@Resource注解,但是它們是有區(qū)別的,比如@Autowired跟Spring框架強(qiáng)耦合了, 如果換成其他框架,@Autowired就沒(méi)作用了。而@Resource是JSR-250提供的,它是Java標(biāo)準(zhǔn),絕大部分框架都支持。

接下來(lái),我們總結(jié)一下@Autowired和@Resource的區(qū)別:

(一)、包含的屬性不同

@Autowired只包含一個(gè)參數(shù):required,表示是否開(kāi)啟自動(dòng)注入,默認(rèn)是true。而@Resource包含七個(gè)參數(shù),其中最重要的兩個(gè)參數(shù)是:name 和 type。如下:

public @interface Autowired {
 
    /**
     * 是否開(kāi)啟自動(dòng)注入,有些時(shí)候我們不想使用自動(dòng)裝配功能,可以將該參數(shù)設(shè)置成false。
     */
	boolean required() default true;
 
}
 
 
public @interface Resource {
    /**
     * bean的名稱(chēng)
     */
    String name() default "";
 
    String lookup() default "";
 
    /**
     * Java類(lèi),被解析為bean的類(lèi)型
     */
    Class<?> type() default java.lang.Object.class;
 
    enum AuthenticationType {
            CONTAINER,
            APPLICATION
    }
 
    /**
     * 身份驗(yàn)證類(lèi)型
     */
    AuthenticationType authenticationType() default AuthenticationType.CONTAINER;
 
    /**
     * 組件是否可以與其他組件之間共享
     */
    boolean shareable() default true;
 
    String mappedName() default "";
 
    /**
     * 描述
     */
    String description() default "";
}

(二)、@Autowired默認(rèn)按byType自動(dòng)裝配,而@Resource默認(rèn)byName自動(dòng)裝配。

@Autowired如果要使用byName,需要使用@Qualifier一起配合。而@Resource如果指定了name,則用byName自動(dòng)裝配,如果指定了type,則用byType自動(dòng)裝配。

(三)、注解應(yīng)用的地方不同

@Autowired能夠用在:構(gòu)造器、方法、參數(shù)、成員變量和注解上,而@Resource能用在:類(lèi)、成員變量和方法上。

(四)、出處不同

@Autowired是Spring定義的注解,而@Resource是JSR-250定義的注解。所以@Autowired只能在Spring框架下使用,而@Resource則可以與其他框架一起使用。

(五)、裝配順序不同

@Autowired的裝配順序如下:

@Autowired默認(rèn)先按byType進(jìn)行匹配,如果發(fā)現(xiàn)找到多個(gè)bean,則又按照byName方式進(jìn)行匹配,如果還有多個(gè),則報(bào)出異常。

@Resource的裝配順序如下:

如果同時(shí)指定了name和type,流程如下:

如果指定了name,流程如下:

只是指定了@Resource注解的name,則按name后的名字去bean元素里查找有與之相等的name屬性的bean。

 如果指定了type,流程如下:

只指定@Resource注解的type屬性,則從上下文中找到類(lèi)型匹配的唯一bean進(jìn)行裝配,找不到或者找到多個(gè),都會(huì)拋出異常。

如果既沒(méi)有指定name,也沒(méi)有指定type,流程如下:

既不指定name屬性,也不指定type屬性,則自動(dòng)按byName方式進(jìn)行查找。如果沒(méi)有找到符合的bean,則回退為一個(gè)原始類(lèi)型進(jìn)行進(jìn)行查找,如果找到就注入。

總結(jié)

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

相關(guān)文章

  • java網(wǎng)上圖書(shū)商城(2)Category模塊

    java網(wǎng)上圖書(shū)商城(2)Category模塊

    這篇文章主要介紹了java網(wǎng)上圖書(shū)商城,Category模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 利用Java如何獲取IP與機(jī)器名方法示例

    利用Java如何獲取IP與機(jī)器名方法示例

    在開(kāi)發(fā)工作中,我們常常需要獲取客戶端的IP。下面這篇文章主要給大家介紹了關(guān)于利用Java如何獲取IP與機(jī)器名的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • 教你輕松制作java視頻播放器

    教你輕松制作java視頻播放器

    這篇文章主要為大家詳細(xì)介紹了如何編寫(xiě)屬于自己的java視頻播放器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot使用RestTemplate的示例詳解

    SpringBoot使用RestTemplate的示例詳解

    RestTemplate繼承自InterceptingHttpAccessor并且實(shí)現(xiàn)了RestOperations接口,其中RestOperations接口定義了基本的RESTful操作,這些操作在RestTemplate中都得到了實(shí)現(xiàn),這篇文章主要介紹了SpringBoot使用RestTemplate,需要的朋友可以參考下
    2023-05-05
  • 深入淺析springboot中static和templates區(qū)別

    深入淺析springboot中static和templates區(qū)別

    這篇文章主要介紹了springboot中static和templates區(qū)別,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • JavaWeb利用struts實(shí)現(xiàn)文件下載時(shí)改變文件名稱(chēng)

    JavaWeb利用struts實(shí)現(xiàn)文件下載時(shí)改變文件名稱(chēng)

    這篇文章主要為大家詳細(xì)介紹了JavaWeb利用struts實(shí)現(xiàn)文件下載時(shí)改變文件名稱(chēng)的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • java  LinkedList類(lèi)詳解及實(shí)例代碼

    java LinkedList類(lèi)詳解及實(shí)例代碼

    這篇文章主要介紹了java LinkedList類(lèi)詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 淺談java8 stream flatMap流的扁平化操作

    淺談java8 stream flatMap流的扁平化操作

    這篇文章主要介紹了淺談java8 stream flatMap流的扁平化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java實(shí)現(xiàn)添加文字水印和圖片水印功能

    Java實(shí)現(xiàn)添加文字水印和圖片水印功能

    為圖片添加水印是一種常用的圖片處理技術(shù),本文主要介紹了Java實(shí)現(xiàn)添加文字水印和圖片水印功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Springboot與vue實(shí)例講解實(shí)現(xiàn)前后端分離的人事管理系統(tǒng)

    Springboot與vue實(shí)例講解實(shí)現(xiàn)前后端分離的人事管理系統(tǒng)

    這篇文章主要介紹了如何用Java實(shí)現(xiàn)企業(yè)人事管理系統(tǒng),文中采用springboot+vue實(shí)現(xiàn)前后端分離,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-06-06

最新評(píng)論