javascript
Spring Boot实践教程(二):SpringApplication分析
2019獨角獸企業重金招聘Python工程師標準>>>
本文會通過分析上一篇中跑起來的示例程序來分析一下Spring Boot程序運行的基本原理。
概要
在上一篇的介紹中,程序是通過SpringBoot1HelloworldApplication.main()方法運行起來的:
public static void main(String[] args) {SpringApplication.run(SpringBoot1HelloworldApplication.class, args); }從代碼中可以看到,通過SpringApplication.run ,這樣一個靜態方法,非常便捷地啟動了一個Spring程序。SpringApplication這個類實際上就是一個Spring Boot應用的起點,每一個Spring Boot的應用都會有一個類似的啟動類,而run方法的實際的作用是初始化了一個Spring容器的上下文。下面我們來分析一下這個簡單的應用是如何啟動起來的。
思考
按照以往使用Spring Framework的經驗,初始化一個Spring容器,需要讀取一些配置信息,但是在我們這個示例程序里面是沒有做任何配置的,先看一下源碼。
源碼分析
從SpringApplication.run()方法一路追蹤,看到下面的一個運行的過程:
上面的源碼最下面的紅框中在加載META-INF下面的spring.factories文件,然后我們看到有很幾個包里面都帶這個文件,我們主要關注一下spring-boot-autoconfigure這個包下面的。
大致內容示例如下:
可以看出,這個文件基本上都是定義一些Initializer和Listener這些定義都會在SpringApplication。run啟動的時候進行加載。這些內容加載之后有什么用呢,以上圖中紅框對應的org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration 進行舉例說明,先看一下該類的源碼:
簡單理解一下這個類上的幾個注解:
- @Configuration 本類是一個Spring的配置類
- @ConditionalOnClass({ RabbitTemplate.class, Channel.class }) 類路徑中有注解中的兩個類則加載本配置
- @EnableConfigurationProperties(RabbitProperties.class) 加載注解類中對應的配置類
到這里我們大概就知道了這個spring.factories 配置文件其實就是定義了一些Spring啟動需要的監聽以及Spring Boot 啟動是的默認配置,這樣就能達到在不做任何配置的情況下,啟用Spring Boot提供的默認配置來啟動程序。
SpringApplication運行及自動配置總結
簡單總結一下:
歡迎關注我的微信公眾號:
轉載于:https://my.oschina.net/lsjcoder/blog/1585346
總結
以上是生活随笔為你收集整理的Spring Boot实践教程(二):SpringApplication分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TongWeb8知识总结
- 下一篇: JSON - 简介