大家好,我是鋒哥。今天分享關于【SpringBoot的啟動原理?】面試題。希望對大家有幫助;
SpringBoot的啟動原理?
1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網
Spring Boot的啟動原理主要是通過 SpringApplication 類來啟動一個Spring Boot應用。具體的啟動流程可以分為以下幾個主要步驟:
1.?初始化SpringApplication對象
- Spring Boot應用的啟動入口通常是?
main
?方法,通常是應用的啟動類。 - 啟動類通過?
SpringApplication.run(Application.class, args)
?啟動應用。SpringApplication
?是Spring Boot的核心類,它負責整個應用的啟動過程。
public static void main(String[] args) {SpringApplication.run(Application.class, args);
}
2.?創建SpringApplication實例
SpringApplication.run()
?方法會創建一個?SpringApplication
?實例,并調用它的?run()
?方法來啟動Spring應用上下文。
SpringApplication application = new SpringApplication(Application.class);
3.?準備和初始化環境
- 在調用?
run()
?方法時,Spring Boot首先會創建一個?ApplicationContext
,并加載所有的配置(如:application.properties
?或?application.yml
)。 - 它會通過?
ConfigurableEnvironment
(也就是 Spring 的環境配置對象)來加載屬性配置。此時,Spring Boot 會加載默認的環境配置,如嵌入式Tomcat配置、數據源配置等。
4.?設置命令行參數和配置
- 在Spring Boot應用啟動時,
SpringApplication
?會解析啟動時傳遞的命令行參數,并在運行時將這些參數設置到Spring環境中。 - 如果應用包含
@SpringBootApplication
注解,它會幫助我們自動配置很多常見的配置(如數據庫、JPA、Web應用等)。
5.?創建Spring應用上下文(ApplicationContext)
- Spring Boot會創建一個默認的?
AnnotationConfigApplicationContext
?或者?GenericWebApplicationContext
,它會掃描并加載所有的配置和Bean(包括自動配置的類)。 - 這會根據應用程序中的配置類(標注
@Configuration
或其他配置注解)來初始化 Spring 容器,并自動注入相應的Bean。
6.?自動配置機制
- Spring Boot提供了?自動配置?的機制,借助于?
@EnableAutoConfiguration
?注解,Spring Boot根據項目的依賴和配置自動判斷需要哪些默認配置。 - 例如,如果項目中有?
spring-boot-starter-web
?依賴,Spring Boot就會自動配置Tomcat作為Web服務器。
7.?運行SpringApplication的生命周期監聽器
- 在應用啟動過程中,Spring Boot會觸發不同的事件,允許開發者監聽這些事件來定制應用的行為。比如,
ApplicationEnvironmentPreparedEvent
、ApplicationContextInitializedEvent
、ApplicationPreparedEvent
等事件。
8.?啟動嵌入式Web服務器
- 如果是Web應用(比如RESTful API應用),Spring Boot會自動啟動一個嵌入式Web服務器。默認情況下,Spring Boot使用Tomcat作為Web服務器,但也可以使用Jetty或Undertow等。
- Spring Boot會根據應用的配置自動啟動嵌入式Web服務器,并將應用部署在該服務器上。
9.?執行?CommandLineRunner
?或?ApplicationRunner
- 如果應用中有實現了?
CommandLineRunner
?或?ApplicationRunner
?接口的Bean,Spring Boot會在應用啟動完成后執行這些接口中的?run()
?方法。 - 這通常用于應用啟動后進行一些自定義的初始化工作,比如加載數據、初始化緩存等。
10.?應用啟動完畢
- 一旦Spring Boot應用完全啟動,
SpringApplication.run()
方法返回并且控制權回到調用者(通常是main方法)。此時,Spring Boot應用就可以接收HTTP請求或執行其他任務。
關鍵點總結:
- SpringApplication:應用啟動的核心類。
- 自動配置:Spring Boot根據項目依賴自動配置常見的服務和組件。
- ApplicationContext:Spring應用上下文,管理所有Bean和配置信息。
- 嵌入式Web服務器:默認啟動嵌入式Web服務器(如Tomcat),可以根據需要替換為其他服務器。
- 生命周期監聽:Spring Boot通過事件機制觸發生命周期相關的操作。
通過這些步驟,Spring Boot應用能夠高效、快速地啟動并提供服務。