SpringBoot 總結篇

        時至今日,SpringBoot 系列文章也算是告一段落,回想起當初立flag的情景,彷彿還歷歷在目。用一個月時間學完 SpringBoot 並整理成文章?又定一些異想天開計劃,當時這樣想着。不過,雖然過程比較艱辛,但結局也還算完美,在最後一篇文章完成那一刻,心情卻很平靜,我想,大概是習覺得常了吧。html

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

正文

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

該系列文章雖然以討論 SpringBoot 爲中心,但也涉及到了 Spring 技術棧,由於 SpringBoot 底層核心是就是 Spring ,若是對 Spring 瞭如指掌,那學習 SpringBoot 就垂手可得了。安全

一、自動裝配基礎

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

SpringBoot 中運用了大量的 Spring 註解,其註解大體分爲這幾類:app

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

配置註解都在 Spring 的 ConfigurationClassParser#doProcessConfigurationClass 方法中進行處理,後續會在 Spring 系列文章中詳細介紹;模式註解都標註了 @Component 註解,屬於 @Component 的派生註解,@ComponentScan 會掃描標註 @Component 及其派生註解的類,並將這些類加入到 Spring 容器中;@Enable 模塊註解中經過 @Import 導入配置類,在這些配置類中加載 @Enable 模塊須要的組件。學習

二、自動裝配正文

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

SpringBoot 時代,經過一個main方法就能夠啓動一個應用,其底層依賴的就是 Spring 幾個註解。從 @SpringBootApplication 註解中的 @EnableAutoConfiguration 註解開始,@EnableAutoConfiguration 屬於 Spring@Enable 模塊註解,在該註解中經過 @Import 導入 AutoConfigurationImportSelector 類,在該類中加載全部以 AutoConfiguration 爲後綴且標註 @Configuration 註解的自動配置類,每一個自動配置類能夠裝配一個外部模塊,如 Web MVC 模塊對應的配置類是 WebMvcAutoConfiguration 。在自動配置類中又有衆多 @Conditional 條件註解,可達到靈活裝配的目的。htm

三、SpringApplication啓動類準備階段

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

在構造 SpringApplication 啓動類時,初始化了幾個重要的類,如 WebApplicationTypeApplicationContextInitializerApplicationListener。其中 WebApplicationType 存儲的是當前應用類型,如 Servlet Web 、Reactive Web; ApplicationContextInitializerApplicationListener 則是 SpringBoot 經過擴展 Spring 特性建立的初始化器及監聽器。

四、SpringApplication啓動類運行階段

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

SpringApplication 運行階段中,先是經過擴展 Spring 監聽機制,在 SpringBoot 各個階段發佈不一樣事件,執行多個事件監聽器;而後建立 Environment 類,這是外部化配置的核心類;最後啓動 Spring 容器,經過 WebApplicationType 斷定當前應用類型,建立應用對應 ApplicationContext 應用上下文,再調用 ApplicationContext#refresh 方法啓動容器。

五、外部化配置之Environment

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

這篇文章介紹了外部化配置的幾種資源類型,如 properties、YAML、環境變量、系統屬性、啓動參數等。還詳細介紹了 Environment 類,該類是外部化配置核心類,全部外部化配置數據,都保存在該類中,並和你們討論了整個存儲流程。

六、外部化配置之@ConfigurationProperties

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

@ConfigurationPropertiesSpringBoot 實現外部化配置的重要註解,配合 SprinBoot 自動裝配特性來達到快速開發的目的。主要將 properties 配置文件和 Properties 配置類中的屬性進行映射,一樣也和你們討論了整個映射流程。

七、嵌入式Web容器

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

這篇文章詳細討論了容器的建立及啓動。傳統 Spring 應用需手動建立和啓動 Web 容器,在 SpringBoot 中,則是嵌入式的方式自動建立和啓動。SpringBoot 支持的 Web 容器類型有 Servlet Web 容器和 Reactive Web 容器,它們都有具體容器實現,Sevlet Web 對應的是 TomcatJettyUndertow,默認實現是 Tomcat;Reactive Web 對應的是 Netty

八、Starter機制之自定義Starter

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

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

結語

總結篇就到這裏結束,最後,江湖路遠,咱們,下個系列見。

相關文章
相關標籤/搜索