Spring Boot專案啟動過程
阿新 • • 發佈:2021-02-04
技術標籤:javaspring boot
SpringBoot 專案啟動分析
啟動入口
SpringBoot 工程中由SpringBootApplication註解描述的類為啟動入口類,例如:
package com.cy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application {//Application.class public static void main(String[] args) {//Main Thread SpringApplication.run(Application.class, args); } }
啟動過程概要分析
SpringBoot工程啟動時其簡易初始化過程,如圖所示:
在啟動過程中底層做了哪些事情,大致描述如下:
1)基於配置載入類(通過ClassLoader將指定位置的類讀到記憶體->底層通過執行緒呼叫IO從磁碟讀取到記憶體)。
2)對類進行分析(建立位元組碼物件-Class型別,通過反射獲取器配置資訊)。
3)對於指定配置(例如由spring特定註解描述)的物件儲存其配置資訊(藉助BeanDefinition物件儲存)。
4)基於BeanDefinition物件中class的配置構建類的例項(Bean物件),並進行bean物件的管理(可能會儲存到bean池)。
spring boot專案啟動過程中,首先通過@SpringBootApplication註解下的main方法啟動,然後spring boot通過執行緒和IO把磁碟中的Java基礎類,springboot內部類以及與main方法同一個包下及其子包的類載入到記憶體中,通過對Bean的註解和配置資訊分析,將Bean的配置資訊存到spring的Bean配置資訊容器中,由於spring是一個整合物件資源和建立物件資源的框架,所以spring會基於Bean配置資訊容器中的資訊,在工廠BeanFactory建立Bean例項物件,並將其儲存到spring的Bean例項物件容器中以備使用,BeanPool就類似於執行緒池,將Bean例項物件使用完後依然會回到BeanPool中方便多次迴圈利用。