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

Spring中的@Resource源碼解析

 更新時(shí)間:2023年09月25日 08:54:25   作者:木小同  
這篇文章主要介紹了Spring中的@Resource源碼解析,這個(gè)注解加載的時(shí)候經(jīng)過的類是CommonAnnotationBeanPostProcessor和Autowired一樣,也是postProcessProperties()方法,需要的朋友可以參考下

@Resource 源碼

這個(gè)注解加載的時(shí)候經(jīng)過的類是CommonAnnotationBeanPostProcessor 和Autowired一樣,也是postProcessProperties()方法。

而且 InjectionMetadata metadata = findResourceMetadata(beanName, bean.getClass(), pvs); 這一行的內(nèi)部流程和AutowiredAnnotationBeanPostProcessor是一樣的所以看一下就可以,不在這里一一解析了。

在這里插入圖片描述

不一樣的點(diǎn)在于inject()方法的調(diào)用,這個(gè)inject()方法調(diào)用的是父類里面的,并沒有像Autowired里面一樣調(diào)用子類Element的inject()方法。

主要代碼就在紅框中

getResourceToInject()方法來獲取需要注入的對(duì)象I 按我們之前的例子中來說,需要往F類中注入I對(duì)象,那么target就是F,requestingBeanName就是I

在這里插入圖片描述

Resource重寫了Element的方法,所以進(jìn)入了ResourceElement這個(gè)類中 if條件中的代碼先不用看,這里這里暫時(shí)不會(huì)執(zhí)行。

在這里插入圖片描述

getResource()方法中代碼有很多條件,最終執(zhí)行的代碼就是autowireResource()方法

在這里插入圖片描述

首先是第一個(gè)if(factory instanceof AutowireCapableBeanFactory) 這里正常情況下都是會(huì)成立的: 可以通過AnnotationConfigApplicationContext()這個(gè)類看到, AnnotationConfigApplicationContext-extends->GenericApplicationContext GenericApplicationContext類中的屬性DefaultListableBeanFactory-extends->AbstractAutowireCapableBeanFactory-extends->AbstractBeanFactory 關(guān)系有點(diǎn)不調(diào)好理,大概看一下知道這個(gè)if一定會(huì)成立就可以了。

在這里插入圖片描述

那么Resource和Autowired主要的區(qū)別就在這一行。 第一個(gè)判斷是寫死的true不用管;

在這里插入圖片描述

而第二個(gè)屬性isDefaultName,在默認(rèn)情況下是false,但是!在初始化的時(shí)候會(huì)判斷@Resource注解后面有沒有(name="")這個(gè)屬性,如果有值的話,是false,如果沒有值的話是true

在這里插入圖片描述

再來看第三個(gè)判斷,factory.containsBean(name) 這個(gè)方法就是,通過name去spring容器Map中查詢,能不能找到這個(gè)單例bean; 或者在beanDefinition中能不能找到這個(gè)bean。 這兩個(gè)區(qū)別在哪呢,前一個(gè)是已經(jīng)實(shí)例化好的Bean,而后一個(gè)可以理解為存儲(chǔ)Bean所有掃描到的對(duì)象。這個(gè)也是需要展開來講的。 這里只需要知道,是去spring容器中通過name去查詢bean就可以了。

在這里插入圖片描述

而為什么要進(jìn)行這個(gè)判斷,這就是Resource和Autowired的主要區(qū)別,這里先通過name來獲取Bean,如果按照我們之前的例子的話,就是直接通過”a“去獲取Bean。

@Resource
I a;

我們?cè)倩貋砜催@個(gè)代碼,也就是說,進(jìn)入了這個(gè)if判斷的話,那就與Autowired沒有區(qū)別了,而else中的邏輯才是通過name去查找Bean。 這就是Resource的注入邏輯

在這里插入圖片描述

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

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)IP地址解析的示例代碼

    SpringBoot實(shí)現(xiàn)IP地址解析的示例代碼

    本篇帶大家實(shí)踐在springboot項(xiàng)目中獲取請(qǐng)求的ip與詳細(xì)地址,我們的很多網(wǎng)站app中都已經(jīng)新增了ip地址顯示,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 分布式Netty源碼分析概覽

    分布式Netty源碼分析概覽

    這篇文章主要為大家介紹了分布式Netty源碼分析概覽,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn)

    SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn)

    這篇文章主要介紹了SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot實(shí)現(xiàn)簡(jiǎn)單文件上傳功能

    SpringBoot實(shí)現(xiàn)簡(jiǎn)單文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)簡(jiǎn)單文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • SpringMVC攔截器失效問題及解決方法

    SpringMVC攔截器失效問題及解決方法

    這篇文章主要介紹了SpringMVC?攔截器和異常處理器,以及SpringMVC攔截器失效分析解決方案,文中補(bǔ)充介紹了SpringMVC?攔截器和異常處理器的相關(guān)知識(shí),需要的朋友可以參考下
    2024-01-01
  • 詳解在Spring?Boot中使用數(shù)據(jù)庫(kù)事務(wù)

    詳解在Spring?Boot中使用數(shù)據(jù)庫(kù)事務(wù)

    本篇文章主要介紹了詳解在Spring?Boot中使用數(shù)據(jù)庫(kù)事務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下<BR>
    2017-05-05
  • SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn)

    SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn)

    在接入Spring-Cloud-Gateway時(shí),可能有需求進(jìn)行緩存Json-Body數(shù)據(jù)或者Form-Urlencoded數(shù)據(jù)的情況。這篇文章主要介紹了SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2019-01-01
  • SpringBoot生成二維碼的實(shí)現(xiàn)

    SpringBoot生成二維碼的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot生成二維碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 淺談spring和spring MVC的區(qū)別與關(guān)系

    淺談spring和spring MVC的區(qū)別與關(guān)系

    下面小編就為大家?guī)硪黄獪\談spring和spring MVC的區(qū)別與關(guān)系。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • IDEA 配置 JRebel 熱部署的方法(推薦)

    IDEA 配置 JRebel 熱部署的方法(推薦)

    這篇文章主要介紹了IDEA 配置 JRebel 熱部署的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論

尼玛县| 桐庐县| 抚州市| 凤台县| 饶阳县| 锦屏县| 木兰县| 雅江县| 抚宁县| 孝昌县| 宜兰市| 泸定县| 广平县| 渝中区| 芦溪县| 都江堰市| 疏附县| 丹棱县| 凤台县| 祁阳县| 怀来县| 汶川县| 西畴县| 高安市| 乐昌市| 高邑县| 高唐县| 乐东| 临颍县| 乌鲁木齐市| 兰坪| 全南县| 禹城市| 德格县| 广州市| 报价| 山东省| 阜南县| 商都县| 卢龙县| 蒙自县|