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

Spring中的@Resource源碼解析

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

@Resource 源碼

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

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

在這里插入圖片描述

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

主要代碼就在紅框中

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

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

@Resource
I a;

我們再回來看這個代碼,也就是說,進入了這個if判斷的話,那就與Autowired沒有區(qū)別了,而else中的邏輯才是通過name去查找Bean。 這就是Resource的注入邏輯

在這里插入圖片描述

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

相關文章

  • Java基礎之反射技術相關知識總結

    Java基礎之反射技術相關知識總結

    今天帶大家復習Java基礎知識,文中對Java反射技術介紹的非常詳細,對正在學習Java的小伙伴們很有幫助,,需要的朋友可以參考下
    2021-05-05
  • Mybatis實現(xiàn)查詢相冊數(shù)據(jù)列表流程講解

    Mybatis實現(xiàn)查詢相冊數(shù)據(jù)列表流程講解

    這篇文章主要介紹了Mybatis實現(xiàn)查詢相冊數(shù)據(jù)列表流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-12-12
  • Java日常練習題,每天進步一點點(60)

    Java日常練習題,每天進步一點點(60)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • java加載屬性配置properties文件的方法

    java加載屬性配置properties文件的方法

    這篇文章主要介紹了java加載屬性配置properties文件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • javafx實現(xiàn)五子棋游戲

    javafx實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了javafx實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • SpringBoot2.0如何自定義404頁面渲染

    SpringBoot2.0如何自定義404頁面渲染

    這篇文章主要介紹了SpringBoot2.0如何自定義404頁面渲染問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • android顯示意圖激活另一個Activity的方法

    android顯示意圖激活另一個Activity的方法

    下面小編就為大家?guī)硪黄猘ndroid顯示意圖激活另一個Activity的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • jvm內存溢出解決方法(jvm內存溢出怎么解決)

    jvm內存溢出解決方法(jvm內存溢出怎么解決)

    jvm內存溢出解決方法,詳細內容看下面解釋
    2013-12-12
  • Spring Boot2配置服務器訪問日志過程解析

    Spring Boot2配置服務器訪問日志過程解析

    這篇文章主要介紹了Spring Boot2配置服務器訪問日志過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 詳解在springboot中使用Mybatis Generator的兩種方式

    詳解在springboot中使用Mybatis Generator的兩種方式

    這篇文章主要介紹了詳解在springboot中使用Mybatis Generator的兩種方式,本文將介紹到在springboot的項目中如何去配置和使用MBG以及MBG生成代碼的兩種方式,非常具有實用價值,需要的朋友可以參考下
    2018-11-11

最新評論