免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

從SpringBoot啟動,閱讀源碼設計( 三 )


從SpringBoot啟動,閱讀源碼設計

文章插圖
ApplicationEvent:應用事件基礎抽象類,繼承自JDK中EventObject類,具體事件會繼承該類,內部聲明了事件源和發(fā)生時間兩個核心屬性;
ApplicationEventMulticaster:應用事件廣播的頂級接口,可以將指定的應用事件廣播給適合的監(jiān)聽器;
SimpleApplicationEventMulticaster:應用事件廣播接口的簡單實現,可以斷點該類的multicastEvent方法,查看廣播時應用事件和其相應的監(jiān)聽器;
ApplicationListener:應用事件監(jiān)聽器接口,繼承自JDK中EventListener接口,Spring中擴展了多種具體的事件監(jiān)聽器,以實現各種不同的場景需求,比如最常見的ConfigFileApplicationListener配置文件監(jiān)聽器;
九、配置加載SpringBoot工程中,配置文件的管理策略非常復雜,有內部程序執(zhí)行加載配置,也有外部集成的組件配置,當然最核心的就是工程的自定義配置;
【從SpringBoot啟動,閱讀源碼設計】
從SpringBoot啟動,閱讀源碼設計

文章插圖
ConfigFileApplicationListener.Loader:配置文件監(jiān)聽器的內部類,實現對工程中的配置源加載,其核心邏輯在Loader.load方法中實現,具體邏輯由相關的實現類完成;
PropertySourceLoader:配置加載的策略接口,在Spring工程中支持多種類型的文件配置,比如yml、yaml、properties、xml,需要通過文件的擴展名選擇相應的加載實現類;
YamlPropertySourceLoader:加載.yml或者.yaml類型的文件,SpringBoot工程中常用的配置文件類型,最終轉換成Name和Value的屬性源集合,即通過PropertySource抽象類來描述;
十、數據庫集成Spring框架的強大之處還在于能夠和其他組件進行簡單快速的集成,比如常用的數據庫、緩存、消息隊列等各種類型的組件,分析內部的集成邏輯,會發(fā)現很多原理上的相似性,尤其在SpringBoot框架中,約定大于配置;
從SpringBoot啟動,閱讀源碼設計

文章插圖
DataSourceAutoConfiguration:SpringBoot工程中數據庫的自動化配置類,在配置中Hikari是默認選擇的連接池,也是號稱速度最快的;
DataSourceProperties:數據源配置相關的基礎類,在DataSourceConfiguration配置類中,會基于參數去創(chuàng)建數據源對象;
HikariDataSource:Hikari連接池組件中的數據源API,描述數據源的具體信息,例如配置、連接池、狀態(tài)等,具體的數據庫連接邏輯是在該組件內部完成的;
基于SpringBoot集成數據庫的原理,可以擴展性的看看:Redis組件的RedisAutoConfiguration配置類;Kafka組件的KafkaAutoConfiguration配置類,Elasticsearch組件的RestClientAutoConfiguration配置類,在設計原理上都有異曲同工之妙;
寫在最后
從個人經驗來看,想要閱讀Spring框架的源碼設計,需要基于應用流程先構建一個大的輪廓結構,理解設計中的常用策略和原理,然后再深入單個模塊的細節(jié)邏輯,這樣容易找到閱讀節(jié)奏;
本文并沒有涉及源碼中過多的細節(jié)邏輯,只是從服務啟動作為切入點,整理與開發(fā)關聯性較為直接的源碼模塊,描述個人對于Spring源碼閱讀的基礎思路 。
十一、參考源碼應用倉庫:https://gitee.com/cicadasmile/butte-flyer-parent組件封裝:https://gitee.com/cicadasmile/butte-frame-parent

經驗總結擴展閱讀