激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Spring bean對象實例化實現過程圖解

Spring bean對象實例化實現過程圖解

2020-07-10 19:47edda_huang JAVA教程

這篇文章主要介紹了Spring bean對象實例化實現過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

好了 我們聊聊 Bean 的實例化過程的幾個重要角色

BeanDefinitionRegistryPostProcessor 接口

Refresh().invokeBeanFactoryPostProcessors 這個方法里面。

BeanDefinitionRegistryPostProcessor 這個接口的調用分為三部:

1、調用實現了 PriorityOrdered 排序接口

2、調用實現了 Ordered 排序接口

3、沒有實現接口的調用

這個接口我的理解:獲取 BeanDefinitionRegistry 對象,獲取到這個對象就可以獲取這個對象中注冊的所有 BeanDefinition 對象,所以我們知道了,我們擁有這個對象就可以完成里面所有 BeanDefinition 對象的修改新增操作

Spring bean對象實例化實現過程圖解

BeanPostProcessor 的注冊

Refresh().registerBeanPostProcessors 這個方法里面。

Spring bean對象實例化實現過程圖解

拿到 BeanFactory 中所有注冊的 BeanDefinition 對象的名稱 beanName。

Spring bean對象實例化實現過程圖解

然后判斷是否實現了 PriorityOrdered 排序接口,Ordered 排序接口,getBean 是將該 ppName 對應的 BeanDefinition 對象實例化。

Spring bean對象實例化實現過程圖解

把對應的 BeanPostProcessor 對象注冊到 BeanFactory 中,BeanFactory 中有一個list 容器接收。getSingleton 方法代碼位置:AbstractBeanFactory.doGetBean 方法中

Spring bean對象實例化實現過程圖解

方法里面核心要點:

Spring bean對象實例化實現過程圖解

Spring bean對象實例化實現過程圖解

把 beanName 添加到 singletonsCurrentlyInCreation Set 容器中,在這個集合里面的 bean 都是正在實例化的 bean,就是實例化還沒做完的 BeanName

Spring bean對象實例化實現過程圖解

調到 getObject 方法,完成 bean 的實例化。接下來

Spring bean對象實例化實現過程圖解

getObject 調用完后,就代表著 Bean 實例化已經完成了,這時候就需要

1、singletonsCurrentlyInCreation 把 beanName 從這個集合中刪除

2、addSingleton,把 bean 緩存到一級緩存中

Spring bean對象實例化實現過程圖解

createBean

方法代碼位置:AbstractBeanFactory.doGetBean 方法中

Spring bean對象實例化實現過程圖解

這個方法是 bean 實例化核心方法

Spring bean對象實例化實現過程圖解

實例化方法,把 bean 實例化,并且包裝成 BeanWrapper點進這個方法里面。

Spring bean對象實例化實現過程圖解

這個方法是反射調用類中的 factoryMethod 方法。這要知道@Bean 方法的原理,實際上spring 會掃描有@bean 注解的方法,然后把方法名稱設置到 BeanDefinition 的 factoryMethod屬性中,接下來就會調到上面截圖中的方法實現@Bean 方法的調用。該方法里面的參數解析過程不需要了解。

Spring bean對象實例化實現過程圖解

determineConstructorsFromBeanPostProcessors

這個方法是 BeanPostProcessor 接口類的首次應用,最終會掉到AutowiredAnnotationBeanPostProcessor 類的方法,在方法中會掃描有注解的構造函數然后完成裝配過程。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/edda/p/13093617.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久久久久亚洲精品 | 国产成人在线视频播放 | 青青草最新网址 | 激情综合在线 | 国产精品9191 | 久久蜜桃香蕉精品一区二区三区 | 男女无遮挡羞羞视频 | 国产精品午夜未成人免费观看 | 成人午夜视屏 | 色屁屁xxxxⅹ在线视频 | 午夜国产在线观看 | 日韩大片在线永久观看视频网站免费 | 欧美淫视频 | 欧美巨乳在线观看 | 国产一级毛片视频在线! | 草免费视频 | 日本视频免费看 | 男女羞羞在线观看 | 国产成人高清成人av片在线看 | 一区二区三区欧洲 | 成人一级免费 | 久久精品日韩一区 | 欧美一级高清片在线 | 久久久久久久久久亚洲精品 | 亚洲影院在线观看 | 一级毛片免费大片 | chinesexxxx极品少妇 | 精品国产91久久久久 | 久久精品久久久久 | 国产日韩线路一线路二 | 粉嫩一区 | 91黄瓜视频 | 成人福利视频网站 | 精品国产96亚洲一区二区三区 | 日本黄色免费片 | 一区二区三区欧美在线 | 精品在线免费播放 | 日本黄色免费片 | 国产精品一区二区手机在线观看 | 免费视频www在线观看 | 久久99精品国产自在现线 |