
前面10節的回顧
通過前面10節SpringBoot成長記的分析,你應該對SpringBoot的原理和設計思想有了很清晰的認識了,
最后這一節呢,我們將之前每一節最重要的知識點,提取出來一個總結,
第一節成長記1:你真的懂SpringBoot嗎?
我們通過去官方檔案尋找SpringBoot核心功能,教給大家兩個思想,先脈絡后細節的思想和注重思考的思想,
我自己對SpringBoot功能的思考:SpringBoot定義了新的web應用啟動流程、SpringBoot核解決了Spring集成各種技術的復雜性,

第二節成長記2:從HelloWorld開始分析SpringBoot
我們從HelloWorld開始分析,分析了:SpringApplication的創建時核心組件圖、SpringApplication Run方法的脈絡
傳授給大家2個思想
1)連蒙帶猜的思想,根據方法名稱,注釋大體猜測方法和類的作用
2)抓大放小的思想,排除不重要的,分析最主要的,

第三節成長記3:SpringBoot擴展點之SpringApplicationRunListeners
SpringApplicationRunListeners的擴展
1)對流程的擴展方法 starting started running等
2)對組態檔的擴展方法environmentPrepared
3)對容器的擴展方法contextPrepared、contextLoaded
Listeners的擴展點設計
基于配置封裝List
基于觀察者模式設計批量事件廣播器、查詢快取降低O(n)復雜度

第四節成長記4:Run方法中組態檔的處理
我們分析了SpringBoot對對組態檔的決議,組態檔處理核心邏輯是創建組態檔物件、給組態檔物件設定一堆值,主要是各個組態檔,
而最關鍵的是組態檔的設計思考
1)組態檔需要查找:ResourceLoader(ClassLoader)
2)不同組態檔的決議:不同的Resolver
3)組態檔的內容封裝:PropertySource+profile 泛型設計,存盤不同格式內容
4)多個組態檔MutablePropertySources:List

第五節成長記5:Spring容器的創建
Spring容器的創建時的核心組件:reader和scanner、DefaultListableBeanFactory
reader和scanner的設計和作用:reader決議和增加BeanDefination、scanner查找和過濾BeanDefination
術語普及BeanDefinition、BeanDefinitionRegistry、InternalBean
從Reader和Scanner開始思考下Spring容器的抽象設計,Resource->ClassLoader->Reader/Scanner->BeanDefination的設計

第六節成長記6:準備SpringContext容器
prepareContext()的核心脈絡:給容器Context和容器DefaultListableBeanFactory設定一些屬性
觸發的擴展點(非常重要的操作):applyInitializers()觸發的擴展點操作、觸發listener對容器擴展操作
術語普及BeanFactoryPostProcessor是什么?
beanFactory的一些屬性補充(值得一提的操作):
1 )beanFactory.registerSingleton注冊物件到容器的singletonObjects屬性
2)BeanDefinitionLoader.load()補充BeanDefinition,這里補充了1個LearnSpringBootApplication 的BeanDefinition到beanFactory中
設定幾個屬性或者組件(不重要的操作)

第七節成長記7:容器的擴展操作是如何執行的
快速摸一下refreshCotenxt的脈絡
invokeBeanFactoryPostProcessors之前的主要操作概括
術語普及BeanDefinitionRegistryPostProcessor是什么?
invokeBeanFactoryPostProcessors的核心脈絡
1)if-else核心脈絡邏輯:執行擴展方法1:postProcessBeanDefinitionRegistry()、執行擴展方法2:postProcessBeanFactory()
2)3個For回圈的核心脈絡邏輯:之前執行的是Spring內部定義好的一些BeanFactoryPostProcessor,
在執行了if-else邏輯后,其實掃描出來了ClassPath下更多第三方和其他的BeanFactoryPostProcessor

第八節成長記8:SpringBoot實作自動裝配配置,第三方功能的擴展之處
1)SpringBoot實作自動裝配配置
術語普及starter是什么?
核心的ConfigurationClassPostProcessor
思考:ConfigurationClassPostProcessor的添加BeanDefination的設計
2)第三方功能的擴展之處實作原理
思考:mybatis的Mapper如何被添加的?
基于ImportBeanDefinitionRegistrar的擴展
基于BeanFactoryPostProcessor的擴展

第九節成長記9:onRefresh如何啟動內嵌的Tomcat容器的
1)快速看了 onRefresh啟動內嵌tomcat前的操作
2)分析了onRefresh的核心脈絡
3)思考了SpringBoot對web容器的抽象封裝和設計
4)對new Tomcat進行了核心組件和脈絡分析
5)分析了Connector基本創建和擴展設計
6)術語普及:Tomcat的Engine、Context、Host、Wrapper關系
7)prepareContext 中的擴展點ServletContextInitializer
8)思考了:tomcat和SpringBoot怎么整合的?
9)內嵌Tomcat最終的啟動

第十節成長記10:Bean實體化的流程和設計
finishBeanFactoryInitialization之前和之后的操作概況
preInstantiateSingletons方法的核心脈絡
創建bean的核心流程
Bean實體化的擴展點設計

完結寄語
到這里SpringBoot成長記就告一段落了,其實最關鍵的是教給大家的思想,之后SpringBoot的設計和擴展點,最后才是SpringBoot的原理,
當你掌握這些之后,SpringBoot的很多細節,甚至其他類似的邏輯,你都能舉一反三了,那么成長記的目的就達到了
希望可以經過SpringBoot成長記,學到的東西可以學以致用,舉一反三,應用到更多技術學習、面試、線上問題解決等場景中,就像我開篇說的,
一個人成長的按重要性排的順序應該是:思想觀念—>能力方法—>知識、收入,
好了,我們下一個成長記再見!
最終給大家來個圖,完結撒花~~

本文由博客群發一文多發等運營工具平臺 OpenWrite 發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/305322.html
標籤:其他
上一篇:SpringBoot成長記11:SpringBoot完結總結
下一篇:Python資料分析8-時間序列
