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

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

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

一、定義

  • @Autowired

對類成員變量、方法及構(gòu)造函數(shù)進行標注,完成自動裝配的工作。

  • @Resource

在語義上被定義為通過其唯一的名稱來標識特定的目標組件,其中聲明的類型與匹配過程無關(guān)。

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

二、區(qū)別

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

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

(一)、包含的屬性不同

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

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

(二)、@Autowired默認按byType自動裝配,而@Resource默認byName自動裝配。

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

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

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

(四)、出處不同

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

(五)、裝配順序不同

@Autowired的裝配順序如下:

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

@Resource的裝配順序如下:

如果同時指定了name和type,流程如下:

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

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

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

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

如果既沒有指定name,也沒有指定type,流程如下:

既不指定name屬性,也不指定type屬性,則自動按byName方式進行查找。如果沒有找到符合的bean,則回退為一個原始類型進行進行查找,如果找到就注入。

總結(jié)

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

相關(guān)文章

  • Java死鎖問題詳解及示例

    Java死鎖問題詳解及示例

    本文將討論Java程序中死鎖問題的概念、產(chǎn)生原因以及避免策略。同時,我們還將通過代碼示例來進一步闡述這個問題,感興趣的小伙伴可以跟著小編一起來學習
    2023-04-04
  • Java 自旋鎖(spinlock)相關(guān)知識總結(jié)

    Java 自旋鎖(spinlock)相關(guān)知識總結(jié)

    這篇文章主要介紹了Java 自旋鎖(spinlock)相關(guān)知識總結(jié),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Spring中@Autowired和@Qualifier注解的3個知識點小結(jié)

    Spring中@Autowired和@Qualifier注解的3個知識點小結(jié)

    這篇文章主要介紹了Spring中@Autowired和@Qualifier注解的3個知識點小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • springboot整合mybatis-plus代碼生成器的配置解析

    springboot整合mybatis-plus代碼生成器的配置解析

    這篇文章主要介紹了springboot整合mybatis-plus代碼生成器的配置解析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 關(guān)于SpringBoot整合Canal數(shù)據(jù)同步的問題

    關(guān)于SpringBoot整合Canal數(shù)據(jù)同步的問題

    大家都知道canal是阿里巴巴旗下的一款開源工具,純java開發(fā),支持mysql數(shù)據(jù)庫,本文給大家介紹SpringBoot整合Canal數(shù)據(jù)同步的問題,需要的朋友可以參考下
    2022-03-03
  • Spring Boot統(tǒng)一異常處理詳解

    Spring Boot統(tǒng)一異常處理詳解

    我們在做Web應(yīng)用的時候,請求處理過程中發(fā)生錯誤是非常常見的情況。這個時候就需要統(tǒng)一異常處理了,這篇文章主要給大家介紹了Spring Boot如何進行統(tǒng)一異常處理的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 用html css javascript打造自己的RIA圖文教程

    用html css javascript打造自己的RIA圖文教程

    用html&css&javascript打造自己的RIA之一,包括了配置等
    2009-07-07
  • 解決JPA?save()方法null值覆蓋掉mysql預(yù)設(shè)的默認值問題

    解決JPA?save()方法null值覆蓋掉mysql預(yù)設(shè)的默認值問題

    這篇文章主要介紹了解決JPA?save()方法null值覆蓋掉mysql預(yù)設(shè)的默認值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 解決問題:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources

    解決問題:Failed to execute goal org.apache.m

    這篇文章主要給大家介紹了關(guān)于解決問題:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources的相關(guān)資料,文中將解決的辦法介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • Scala入門教程詳解

    Scala入門教程詳解

    這篇文章主要介紹了Scala入門教程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論

肥东县| 尉犁县| 沅陵县| 枣庄市| 克山县| 神农架林区| 利辛县| 渭南市| 通州区| 临泉县| 治县。| 大邑县| 保定市| 双辽市| 漳平市| 阜康市| 仲巴县| 眉山市| 汉寿县| 梓潼县| 鱼台县| 洪湖市| 宁夏| 当涂县| 松溪县| 延吉市| 平顺县| 论坛| 遵义市| 腾冲县| 黔江区| 建阳市| 杂多县| 久治县| 宿迁市| 北川| 眉山市| 建昌县| 梓潼县| 兴隆县| 桂阳县|