国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

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

這篇文章主要介紹了Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

好了 我們聊聊 Bean 的實(shí)例化過(guò)程的幾個(gè)重要角色

BeanDefinitionRegistryPostProcessor 接口

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

BeanDefinitionRegistryPostProcessor 這個(gè)接口的調(diào)用分為三部:

1、調(diào)用實(shí)現(xiàn)了 PriorityOrdered 排序接口

2、調(diào)用實(shí)現(xiàn)了 Ordered 排序接口

3、沒(méi)有實(shí)現(xiàn)接口的調(diào)用

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

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

BeanPostProcessor 的注冊(cè)

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

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

拿到 BeanFactory 中所有注冊(cè)的 BeanDefinition 對(duì)象的名稱 beanName。

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

然后判斷是否實(shí)現(xiàn)了 PriorityOrdered 排序接口,Ordered 排序接口,getBean 是將該 ppName 對(duì)應(yīng)的 BeanDefinition 對(duì)象實(shí)例化。

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

把對(duì)應(yīng)的 BeanPostProcessor 對(duì)象注冊(cè)到 BeanFactory 中,BeanFactory 中有一個(gè)list 容器接收。getSingleton 方法代碼位置:AbstractBeanFactory.doGetBean 方法中

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

方法里面核心要點(diǎn):

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

把 beanName 添加到 singletonsCurrentlyInCreation Set 容器中,在這個(gè)集合里面的 bean 都是正在實(shí)例化的 bean,就是實(shí)例化還沒(méi)做完的 BeanName

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

調(diào)到 getObject 方法,完成 bean 的實(shí)例化。接下來(lái)

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

getObject 調(diào)用完后,就代表著 Bean 實(shí)例化已經(jīng)完成了,這時(shí)候就需要

1、singletonsCurrentlyInCreation 把 beanName 從這個(gè)集合中刪除

2、addSingleton,把 bean 緩存到一級(jí)緩存中

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

createBean

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

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

這個(gè)方法是 bean 實(shí)例化核心方法

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

實(shí)例化方法,把 bean 實(shí)例化,并且包裝成 BeanWrapper點(diǎn)進(jìn)這個(gè)方法里面。

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

這個(gè)方法是反射調(diào)用類中的 factoryMethod 方法。這要知道@Bean 方法的原理,實(shí)際上spring 會(huì)掃描有@bean 注解的方法,然后把方法名稱設(shè)置到 BeanDefinition 的 factoryMethod屬性中,接下來(lái)就會(huì)調(diào)到上面截圖中的方法實(shí)現(xiàn)@Bean 方法的調(diào)用。該方法里面的參數(shù)解析過(guò)程不需要了解。

Spring bean對(duì)象實(shí)例化實(shí)現(xiàn)過(guò)程圖解

determineConstructorsFromBeanPostProcessors

這個(gè)方法是 BeanPostProcessor 接口類的首次應(yīng)用,最終會(huì)掉到AutowiredAnnotationBeanPostProcessor 類的方法,在方法中會(huì)掃描有注解的構(gòu)造函數(shù)然后完成裝配過(guò)程。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

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

延伸 · 閱讀

精彩推薦
588
主站蜘蛛池模板: 一本大道久久a久久精二百 在线a人片免费观看视频 | 激情综合在线 | 五月天婷婷社区 | 亚洲成人av一区二区三区 | 日韩av一区二区在线观看 | 成人久久18免费观看 | 国产精品亚洲精品 | 艹久久| 亚洲精品一 | 亚洲国产视频网 | 久久久精品网站 | 婷婷国产在线观看 | 亚洲一区视频 | 欧美一级在线 | 精品一级 | 日本不卡免费新一二三区 | 欧美成人二区 | 国产福利在线播放 | 亚洲国产精品99久久久久久久久 | www.黄在线看 | 欧美一区二区三区在线看 | 毛片视频网站在线观看 | 中文字幕亚洲一区二区va在线 | 成人羞羞视频免费 | 超碰97中文 | 中文字幕一区二区三区久久 | 91视频专区 | 91成人在线 | 亚洲国产精品视频一区二区三区 | 国产福利一区二区 | 欧美日韩中文字幕在线 | 欧美成人激情 | 国产精品视频一区二区三区四 | 天天爽视频 | 天堂8在线视频 | 午夜视频在线播放 | av一区二区三区免费观看 | 欧美中文在线 | 亚洲精品视频免费在线观看 | 成人影院在线 | 成人午夜视频网 |