聊聊 Springboot 啟動原理
Spring Boot的啟動原理是通過SpringApplication類來實現的。具體流程如下:
創建一個應用程序的SpringApplication實例。
分析應用程序的上下文環境(包括Java系統屬性、環境變量、命令行參數等),并將其轉化為一個可配置的ApplicationContextInitializer列表。
創建一個可配置的Environment實例,并且將其作為參數傳遞給創建的ApplicationContextInitializer列表中的每個實例進行初始化。
創建一個可配置的ResourceLoader實例,并將其傳遞給創建的ApplicationContextInitializer列表中的每個實例進行初始化。
調用ApplicationContextInitializer列表中每個實例的initialize方法,對應用程序的上下文環境進行初始化。
創建一個可配置的BeanDefinitionRegistry實例,并將其傳遞給創建的ApplicationContextInitializer列表中的每個實例進行初始化。
創建一個可配置的ApplicationContext實例,并且將其作為參數傳遞給創建的ApplicationContextInitializer列表中的每個實例進行初始化。
調用ApplicationContextInitializer列表中每個實例的initialize方法,對ApplicationContext進行初始化。
注冊應用程序的主類(如果存在)作為一個bean,并調用其run方法來啟動應用程序。
如果應用程序的主類是一個ServletInitializer(用于Web應用程序),則通過調用其onStartup方法來啟動Web容器。
使用Spring的DispatcherServlet來處理HTTP請求。
如果應用程序的主類實現了CommandLineRunner接口,則調用其run方法,以便在應用程序啟動后執行一些額外的邏輯。
Spring Boot的啟動原理是通過創建SpringApplication實例來分析應用程序的上下文環境并初始化ApplicationContext,然后通過調用應用程序的主類來啟動應用程序,同時處理Web請求和執行一些額外的邏輯。