SpringBoot IOC容器初始化的全流程
SpringBoot IOC容器初始化流程
IOC 容器的初始化,核心工作實(shí)在 AbstractApplicationContext.refresh 方法中完成
在方法中主要做這么幾件事情
準(zhǔn)備 BeanFactory
在這一塊會(huì)為 BeanFactory 設(shè)置很多屬性,比如類(lèi)加載器等等。

執(zhí)行 BeanFactoryPostProcessors 后置處理器
這一階段會(huì)掃描放入容器中的 Bean 信息,得到 BeanDefinition(只掃描不創(chuàng)建)

注冊(cè) BeanProcessors
這一階段我們自己寫(xiě)的 BeanPostProcessors 會(huì)被加載,將來(lái) Bean 實(shí)例化好之后需要用到。

啟動(dòng) tomcat

實(shí)例化所有非懶加載的單例 Bean
多例 Bean 以及懶加載 Bean 不會(huì)在這個(gè)階段創(chuàng)建,以后用到了才創(chuàng)建。

容器初始化完成后會(huì)做一些掃尾工作
清理緩存。
總結(jié)
在 IOC 容器初始化中,首先先準(zhǔn)備 BeanFactory,執(zhí)行 BeanFactoryPostProcessors 后置處理器,注冊(cè) BeanProcessors 并啟動(dòng) tomcat,最后通過(guò) BeanFactory 加載所有非懶加載的單例 Bean。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解讀為什么不推薦使用keySet()進(jìn)行遍歷HashMap
這篇文章主要介紹了我為什么不推薦使用keySet()進(jìn)行遍歷HashMap的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
Java中@ConditionalOnProperty注解使用
在Spring?Boot中,@ConditionalOnProperty注解是一種方便的工具,用于根據(jù)應(yīng)用程序配置文件中的屬性值來(lái)控制Bean的創(chuàng)建和加載,本文就來(lái)介紹一下Java中@ConditionalOnProperty注解使用,感興趣的可以了解一下2023-11-11
SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式實(shí)現(xiàn)步驟
這篇文章主要介紹了SpringBoot返回統(tǒng)一的JSON標(biāo)準(zhǔn)格式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
springboot動(dòng)態(tài)加載jar包動(dòng)態(tài)配置實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于springboot動(dòng)態(tài)加載jar包動(dòng)態(tài)配置的相關(guān)資料,在項(xiàng)目開(kāi)發(fā)的過(guò)程中,有時(shí)候需要?jiǎng)討B(tài)靈活的加載某個(gè)jar包并執(zhí)行其里面的方法的時(shí)候,需要的朋友可以參考下2023-11-11
數(shù)據(jù)結(jié)構(gòu)與算法之手撕排序算法
排序算法看似簡(jiǎn)單,其實(shí)不同的算法中蘊(yùn)涵著經(jīng)典的算法策略。通過(guò)熟練掌握排序算法,就可以掌握基本的算法設(shè)計(jì)思想,本文主要介紹了Java中的排序算法,需要的朋友歡迎閱讀2023-04-04
java利用Future實(shí)現(xiàn)多線程執(zhí)行與結(jié)果聚合實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于java利用Future實(shí)現(xiàn)多線程執(zhí)行與結(jié)果聚合的相關(guān)資料,Future模式的核心,去除了主函數(shù)的等待時(shí)間,并使得原本需要等待的時(shí)間段可以用于處理其他業(yè)務(wù)邏輯,需要的朋友可以參考下2021-12-12
客戶端Socket與服務(wù)端ServerSocket串聯(lián)實(shí)現(xiàn)網(wǎng)絡(luò)通信
這篇文章主要為大家介紹了客戶端Socket與服務(wù)端ServerSocket串聯(lián)實(shí)現(xiàn)網(wǎng)絡(luò)通信的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
Java實(shí)現(xiàn)AES加密和解密方式完整示例
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)AES加密和解密方式的相關(guān)資料,AES加密為最常見(jiàn)的對(duì)稱加密算法,是一種區(qū)塊加密標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用,需要的朋友可以參考下2023-10-10

