springboot運行原理

SpringApplication.run() 做了兩件事情。

1. 判斷當前項目類型,web類型。

2. 初始化Spring中的ApplicationContext的初始化器,去classpath下的META-INF/spring.factories中尋找並創建對象。

3. 創建Spring的IOC容器。
       

@SpringBootApplication註解:
    @SpringBootConfiguration:聲明一個配置類
    @ComponentScan:聲明掃描包
    @EnableAutoConfiguration:聲明啓用自動配置

 

@EnableAutoConfiguration的原理:
    1、會加載classpath下的META-INF/spring.factories文件,並且獲取其中以EnableAutoConfiguration爲key的所有的自動配置類。
    2、這些配置類中,通過@Bean註解,已經完成了幾乎所有的配置,因此我們大多數情況下,無需再配置了。
    3、自動配置類雖然都加載了,但是不一定生效,因爲類都有@ConditionalOn的註解,只有滿足一定的條件,自動配置纔會生效。比如說:指定的一些類必須存在
    4、也可以覆蓋自動配置,因爲默認配置的@Bean上,都有@ConditionalOnMissBean註解,如果我們配置了同一個Bean,那麼自動配置的Bean就失效了!
    5、可以只覆蓋Bean的部分屬性,因爲默認配置的一些屬性,是通過讀取application.yml文件中的屬性來獲取的。因此我們只要修改了application.yml文件,即可覆蓋這部分屬性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章