1. 程式人生 > 其它 >Spring Boot專案啟動過程

Spring Boot專案啟動過程

技術標籤: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中方便多次迴圈利用。