<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Springboot 項(xiàng)目的整個(gè)啟動(dòng)流程

          共 1174字,需瀏覽 3分鐘

           ·

          2021-10-28 22:48

          要從注解講起否則就是耍流氓

          @SpringBootApplication注解

          ?講解:該注解是一個(gè)復(fù)合注解,它由三個(gè)注解組成。

          ? ? ? ? ? ??①@SpringBootConfiguration(打開是@Configuration):表明這是一個(gè)java配置類

          ? ? ? ? ? ? ②@EnableAutoConfiguration:自動(dòng)配置注解,會將所有符合自動(dòng)配置條件的@Configuration配置加載到IOC容器中。

          ? ? ? ? ? ??③@ComponentScan:掃描注解,自動(dòng)掃描符合條件的組件 (@Service,@Component)或者bean定義,記載到IOC容器中

          ?springBoot的啟動(dòng)流程

          1. 從spring.factories配置文件中加載EventPublishingRunListener對象,該對象擁有SimpleApplicationEventMulticaster屬性,即在springboot啟動(dòng)過程的不同階段用來發(fā)射內(nèi)置的生命周期事件。

          2. 準(zhǔn)備環(huán)境變量,包括系統(tǒng)變量,環(huán)境變量,命令行參數(shù),默認(rèn)變量,servlet相關(guān)配置變量,隨機(jī)值及配置文件(比如application.properties)等

          3. 控制臺打印springboot的bannner標(biāo)志

          4. 根據(jù)不同類型環(huán)境創(chuàng)建不同類型的applicationcontext容器,如果是servlet環(huán)境,創(chuàng)建的就是AnnotationConfigServletWebServerApplicatonContext容器對象

          5. 從spring.factories配置文件中加載FailureAnalyZers對象,用來報(bào)告springboot啟動(dòng)過程中的異常

          6. 為剛創(chuàng)建的容器對象做一些初始化工作,準(zhǔn)備一些容器屬性值等,對ApplicationContext應(yīng)用一些相關(guān)的后置處理和調(diào)用各個(gè)ApplicationContextInitializer的初始化方法來執(zhí)行一些初始邏輯等

          7. 刷新容,這一步至關(guān)重要。比如調(diào)用bean factory的后置處理器,注冊BeanPostProcessor后置處理器,初始化事件廣播器且廣播事件,初始化剩下的單例bean和springboot創(chuàng)建內(nèi)嵌的Tomcat服務(wù)器等重要且復(fù)雜的邏輯都在這里實(shí)現(xiàn)

          8. 執(zhí)行刷新新容器后的后置處理邏輯,注意這里為空方法

          9. 調(diào)用ApplicationRunner和CommandLineRunner的run方法,我們實(shí)現(xiàn)這兩個(gè)接口可以在spring容器啟動(dòng)后需要的一些東西 比如加載一些業(yè)務(wù)數(shù)據(jù)等

          10. 報(bào)告啟動(dòng)異常,即若啟動(dòng)過程中拋出異常,此時(shí)喲個(gè)FailureAnalyzers來報(bào)告異常

          11. 最終返回容器對象,這里調(diào)用方法沒有聲明對象來接收

          ?

          瀏覽 24
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色免费片 | 国产精品秘 入口免费直播大尺度 | 国产黄片免费在线观看 | 521av在线观看 | 日韩一级片在线观看 |