時至今日,SpringBoot 系列文章也算是告一段落,回想起當初立flag的情景,彷彿還歷歷在目。用一個月時間學完 SpringBoot 並整理成文章?又定一些異想天開計劃,當時這樣想着。不過,雖然過程比較艱辛,但結局也還算完美,在最後一篇文章完成那一刻,心情卻很平靜,我想,大概是習覺得常了吧。html
在系列結尾,再對 SpringBoot 作一個總結,也算是塵埃落定了。web
SpringBoot 最顯著的功能就是快速啓動一個 Spring 應用,爲 Spring 全部特性提供了更普遍的支持;提供一系列大型項目通用的非功能性功能(例如嵌入式服務器,安全性,指標,運行情況檢查和外部化配置);徹底沒有代碼生成,也不須要XML配置也是一大亮點。spring
該系列文章雖然以討論 SpringBoot 爲中心,但也涉及到了 Spring 技術棧,由於 SpringBoot 底層核心是就是 Spring ,若是對 Spring 瞭如指掌,那學習 SpringBoot 就垂手可得了。安全
SpringBoot 中運用了大量的 Spring 註解,其註解大體分爲這幾類:app
配置註解都在 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
詳見《SpringBoot(三)SpringApplication啓動類準備階段》blog
在構造 SpringApplication
啓動類時,初始化了幾個重要的類,如 WebApplicationType
、ApplicationContextInitializer
、ApplicationListener
。其中 WebApplicationType
存儲的是當前應用類型,如 Servlet Web 、Reactive Web; ApplicationContextInitializer
和 ApplicationListener
則是 SpringBoot
經過擴展 Spring 特性建立的初始化器及監聽器。
詳見《SpringBoot(四)SpringApplication啓動類運行階段》
在 SpringApplication
運行階段中,先是經過擴展 Spring
監聽機制,在 SpringBoot
各個階段發佈不一樣事件,執行多個事件監聽器;而後建立 Environment
類,這是外部化配置的核心類;最後啓動 Spring
容器,經過 WebApplicationType
斷定當前應用類型,建立應用對應 ApplicationContext
應用上下文,再調用 ApplicationContext#refresh
方法啓動容器。
詳見《SpringBoot(五)外部化配置之Environment》
這篇文章介紹了外部化配置的幾種資源類型,如 properties、YAML、環境變量、系統屬性、啓動參數等。還詳細介紹了 Environment
類,該類是外部化配置核心類,全部外部化配置數據,都保存在該類中,並和你們討論了整個存儲流程。
詳見《SpringBoot(六)外部化配置之@ConfigurationProperties》
@ConfigurationProperties
是 SpringBoot
實現外部化配置的重要註解,配合 SprinBoot
自動裝配特性來達到快速開發的目的。主要將 properties 配置文件和 Properties 配置類中的屬性進行映射,一樣也和你們討論了整個映射流程。
這篇文章詳細討論了容器的建立及啓動。傳統 Spring
應用需手動建立和啓動 Web 容器,在 SpringBoot
中,則是嵌入式的方式自動建立和啓動。SpringBoot
支持的 Web 容器類型有 Servlet Web 容器和 Reactive Web 容器,它們都有具體容器實現,Sevlet Web 對應的是 Tomcat
、Jetty
、Undertow
,默認實現是 Tomcat
;Reactive Web 對應的是 Netty
。
詳見《SpringBoot(八)Starter機制之自定義Starter》
這篇文章詳細介紹了 SpringBoot
的 Starter
機制,並經過自定義 Starter
來深刻理解整個運行機制。Starter
也是 SpringBoot
重要特性,經過集成 Starter
依賴,來簡化項目搭建以及開發過程。
總結篇就到這裏結束,最後,江湖路遠,咱們,下個系列見。