Springboot 應用工作原理簡述
同傳統的Spring
開發模式相比,開發Springboot
應用時,我們只需要引入相關的starter jar
包就能構造一個可以執行起來的應用,這樣就可以把主要的精力用於核心業務功能的開發,非常方便和高效。
那麼,在這種方便和高效背後,Springboot
是怎麼工作的?這裡對其工作原理做一個簡單的描述 :
-
專案主動引入的各種
starter jar
包通過自己的maven POM.xml
將自己所依賴的jar
包放到CLASSPATH
;此時
spring-boot-autoconfigure jar
包會因為任何一個starter jar
包的引入被隱式引入;
例子:spring-boot-starter-web
-
註解了
@SpringBootApplication
的類的靜態main()
方法執行將當前類作為主源構造一個SpringApplication
並執行它;Springboot 應用也是java應用。
"主源"在這裡的意思是指後續Spring對很多元件的掃描會發生在這個類所在的包及其子包。 -
註解
@SpringBootApplication
隱式使用了註解@EnableAutoConfiguration
,意思是執行自動配置,然後spring-boot-autoconfigure jar
的屬性檔案META-INF/spring.factories
-
上面步驟提到的自動配置過程中發現的配置類有自己的配置規則,它們會根據CLASSPATH上某個類的存在性,某個檔案的存在性,或者某個屬性的存在性,或者這些條件的複雜組合然後決定自己執行什麼樣的邏輯以及註冊什麼樣的bean。
就是在這個過程中相應的應用程式上下文被準備,相應的初始化工作被執行,相應的事件被廣播和響應,並且伴隨著相應的bean的發現和註冊,當然也可能是內建servlet容器被初始化和啟動,然後,系統就進入了真正的執行時狀態。
參考文件
2.Key Components and Internals of Spring Boot Framework