入口是一個main方法壹堰,這個main方法里面new一個SpringApplication對象邪锌,傳入bean源,就是注解了SpringBootApplication 的那個類侈百,調(diào)用run方法瓮下。
spring boot啟動流程分為兩部分 一部分是準(zhǔn)備階段,一部分是運行階段
準(zhǔn)備階段主要有這么幾步:
1钝域、配置bean的源讽坏,就是bean的來源,就是注解了SpringBootApplication的那個類例证。
2路呜、推斷,推斷應(yīng)用類型织咧,有webflux胀葱,webservlet,none
推斷主類笙蒙,這個是通過線程堆棧實現(xiàn)抵屿,構(gòu)造一個運行時異常,找異常堆棧里面找mian所在的那個類捅位。
3轧葛、加載上下文初始化器 在這里可以調(diào)整applicationcontext
4、加載應(yīng)用事件監(jiān)聽器 這兩個東西都是在mete-info/spring.factories文件里面艇搀。
運行階段尿扯,就是調(diào)用run方法
先是加載SpringApplication運行時監(jiān)聽器,SpringApplicationRunListeners焰雕,默認只有一個EventPublishingRunListener衷笋,需要傳入準(zhǔn)備階段加載的listeners,在這個地方調(diào)用一個廣播器廣播事件矩屁。
然后會根據(jù)推斷類型辟宗,創(chuàng)建一個ApplicationContext爵赵,ConfigurableApplicationContext
對這個context初始化,refresh方法
最后會返回這個context慢蜓。
自動裝配:
1亚再、激活自動配置郭膛, EnableAutoConfiguration
2晨抡、實現(xiàn)自動配置(注解裝配,模式裝配则剃,條件裝配)配置bean
3耘柱、將這個配置配置到spring.factories文件里面去