SpringBoot(九)總結篇

????????時至今日,SpringBoot 系列文章也算是告一段落,雖然過程比較艱辛,但結局也還算完美。

????????在系列結尾,再對 SpringBoot 做一個總結,也算是塵埃落定了。

正文

????????SpringBoot 最顯著的功能就是快速啟動一個 Spring 應用,為 Spring 所有特性提供了更廣泛的支持;提供一系列大型項目通用的非功能性功能(例如嵌入式服務器,安全性,指標,運行狀況檢查和外部化配置);完全沒有代碼生成,也不需要XML配置也是一大亮點。

該系列文章雖然以討論 SpringBoot 為中心,但也涉及到了 Spring 技術棧,因為 SpringBoot 底層核心是就是 Spring ,如果對 Spring 了如指掌,那學習 SpringBoot 就輕而易舉了。

1、自動裝配基礎

詳見《SpringBoot(一)自動裝配基礎》

SpringBoot 中運用了大量的 Spring 注解,其注解大致分為這幾類:

  1. 配置注解:@Configuration、@ComponentScan、@Import@Conditional、Bean
  2. 模式注解:@Componnt@Repository、@Service@Controller
  3. @Enable 模塊注解:@EnableWebMvc、@EnableTransactionManagement@EnableWebFlux

配置注解都在 SpringConfigurationClassParser#doProcessConfigurationClass 方法中進行處理,后續(xù)會在 Spring 系列文章中詳細介紹;模式注解都標注了 @Component 注解,屬于 @Component 的派生注解,@ComponentScan 會掃描標注 @Component 及其派生注解的類,并將這些類加入到 Spring 容器中;@Enable 模塊注解中通過 @Import 導入配置類,在這些配置類中加載 @Enable 模塊需要的組件。

2、自動裝配正文

詳見《SpringBoot(二)自動裝配正文》

SpringBoot 時代,通過一個main方法就可以啟動一個應用,其底層依賴的就是 Spring 幾個注解。從 @SpringBootApplication 注解中的 @EnableAutoConfiguration 注解開始,@EnableAutoConfiguration 屬于 Spring@Enable 模塊注解,在該注解中通過 @Import 導入 AutoConfigurationImportSelector 類,在該類中加載所有以 AutoConfiguration 為后綴且標注 @Configuration 注解的自動配置類,每個自動配置類可以裝配一個外部模塊,如 Web MVC 模塊對應的配置類是 WebMvcAutoConfiguration 。在自動配置類中又有眾多 @Conditional 條件注解,可達到靈活裝配的目的。

3、SpringApplication啟動類準備階段

詳見《SpringBoot(三)SpringApplication啟動類準備階段》

在構造 SpringApplication 啟動類時,初始化了幾個重要的類,如 WebApplicationType 、ApplicationContextInitializer、ApplicationListener。其中 WebApplicationType 存儲的是當前應用類型,如 Servlet Web 、Reactive Web; ApplicationContextInitializerApplicationListener 則是 SpringBoot 通過擴展 Spring 特性創(chuàng)建的初始化器及監(jiān)聽器。

4、SpringApplication啟動類運行階段

詳見《SpringBoot(四)SpringApplication啟動類運行階段》

SpringApplication 運行階段中,先是通過擴展 Spring 監(jiān)聽機制,在 SpringBoot 各個階段發(fā)布不同事件,執(zhí)行多個事件監(jiān)聽器;然后創(chuàng)建 Environment 類,這是外部化配置的核心類;最后啟動 Spring 容器,通過 WebApplicationType 判定當前應用類型,創(chuàng)建應用對應 ApplicationContext 應用上下文,再調用 ApplicationContext#refresh 方法啟動容器。

5、外部化配置之Environment

詳見《SpringBoot(五)外部化配置之Environment》

這篇文章介紹了外部化配置的幾種資源類型,如 properties、YAML、環(huán)境變量、系統(tǒng)屬性、啟動參數(shù)等。還詳細介紹了 Environment 類,該類是外部化配置核心類,所有外部化配置數(shù)據(jù),都保存在該類中,并和大家討論了整個存儲流程。

6、外部化配置之@ConfigurationProperties

詳見《SpringBoot(六)外部化配置之@ConfigurationProperties》

@ConfigurationPropertiesSpringBoot 實現(xiàn)外部化配置的重要注解,配合 SprinBoot 自動裝配特性來達到快速開發(fā)的目的。主要將 properties 配置文件和 Properties 配置類中的屬性進行映射,同樣也和大家討論了整個映射流程。

7、嵌入式Web容器

詳見《SpringBoot(七)嵌入式Web容器》

這篇文章詳細討論了容器的創(chuàng)建及啟動。傳統(tǒng) Spring 應用需手動創(chuàng)建和啟動 Web 容器,在 SpringBoot 中,則是嵌入式的方式自動創(chuàng)建和啟動。SpringBoot 支持的 Web 容器類型有 Servlet Web 容器和 Reactive Web 容器,它們都有具體容器實現(xiàn),Sevlet Web 對應的是 Tomcat、Jetty、Undertow,默認實現(xiàn)是 Tomcat;Reactive Web 對應的是 Netty

8、Starter機制之自定義Starter

詳見《SpringBoot(八)Starter機制之自定義Starter》

這篇文章詳細介紹了 SpringBootStarter 機制,并通過自定義 Starter 來深入理解整個運行機制。Starter 也是 SpringBoot 重要特性,通過集成 Starter 依賴,來簡化項目搭建以及開發(fā)過程。

結語

總結篇到這里就結束了,最后,江湖路遠,我們,下個系列見。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容