spring Boot啟動(dòng)流程
首先我們的Spring boot啟動(dòng)類會(huì)new一個(gè)SpringApplication將我們的啟動(dòng)類放入primarySources,這樣IOC就可以順利的找到并加載IOC容器
第二步推算我們的web應(yīng)用類型
第二步獲取我們的全局配置yml文件里的配置,我們?cè)诘谝淮螁?dòng)spring boot應(yīng)用時(shí)就將這些全局配置YML放入了我們的cache緩存,這樣就不用每次都掃描一次
具體步驟如下圖
第三步掃描ApplicationListener監(jiān)聽器類,發(fā)布事件,尋找該事件需要的Listener類,運(yùn)行這些Listener類執(zhí)行事件,這里涉及了對(duì)外擴(kuò)展對(duì)內(nèi)解耦
創(chuàng)建spring上下文方法
擴(kuò)展知識(shí):為什么Spring boot打成Jar包可以直接運(yùn)行呢
這個(gè)問題的關(guān)鍵就是因?yàn)镴AVA里面沒有提供任何標(biāo)準(zhǔn)的當(dāng)時(shí)能夠加載嵌套里面的JAR文件 所以我們?cè)趺唇鉀Q這個(gè)問題呢
我們通過將pom.XML文件中引入org.springframework.boot.spring-boot-maven-plugin依賴,這個(gè)依賴所能幫我們做的事就是幫你把所引入的依賴打成包 幫你寫一個(gè)啟動(dòng)類并且定義相關(guān)配置文件MANIFEST.MF,我們?cè)谶\(yùn)行jar包時(shí)他首先會(huì)找到也只會(huì)去找Main-Class方法(見下圖),加載并啟動(dòng)我們的spring-Boot程序,如果我們不引入該依賴,會(huì)造成打成的jar包無法運(yùn)行