<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>

          10年開發(fā)大牛教你如何學(xué)習(xí)獲取調(diào)試SpringBoot源代碼

          共 3176字,需瀏覽 7分鐘

           ·

          2022-05-10 13:07



          閱讀代碼前的準(zhǔn)備

          本章內(nèi)容分為兩部分,第一部分將帶大家了解閱讀 Spring Boot 源代碼需要做的準(zhǔn)備工作,包括如何獲取源代碼、源代碼的項(xiàng)目結(jié)構(gòu)、源代碼閱讀工具等內(nèi)容。第二部分重點(diǎn)介紹 SpringBoot 的設(shè)計(jì)理念、設(shè)計(jì)目標(biāo)以及整體框架。

          本章默認(rèn)讀者有一定的 Java 編程能力, 并對(duì) Spring Boot 有一定了解和基本的使用經(jīng)驗(yàn)。

          本文以寫作時(shí) Spring Boot 最新穩(wěn)定版本 2.2.1 為基礎(chǔ)進(jìn)行講解。該版本需在 Java 程序開發(fā)包 JDK 8.0 (及以上版本)和 Maven 3.3+環(huán)境下運(yùn)行,讀者需提前安裝。

          獲取和調(diào)試 Spring Boot 源代碼

          獲取 Spring Boot 的源代碼

          獲取 Spring Boot 源代碼有兩種方式:直接獲取整個(gè)項(xiàng)目源代碼,創(chuàng)建 Maven 項(xiàng)目后間接加載源代碼。我推薦使用第二種方式。

          先介紹第一種方式。直接獲取源代碼方式比較簡單,訪問 GitHub 上的 Spring Boot 項(xiàng)目,通過 git clone 或直接下載 ZIP 壓縮包方式,便可獲取整個(gè)項(xiàng)目源代碼。如果采用 git clone形式,注意下載完成后將代碼切換至 tags 中的 2.2.1.RELEASE 版本。源代碼地址:


          htps://github.com/spring-projects/spring-boot。

          壓縮包下載完成后,可直接將項(xiàng)目導(dǎo)入 IDE,由 IDE 自動(dòng)進(jìn)行編譯,也可在根目錄下執(zhí)行Maven 命令進(jìn)行編譯,代碼如下。

          mvn clean package -Dmaven. test. skip=true -Pfast

          在執(zhí)行上面命令時(shí),-P 參數(shù)指定了快速編譯,如果需要全量編譯,則-P 參數(shù)值為 full。無論采用 git clone 還是 ZIP 壓縮包形式下載,都會(huì)將整個(gè)項(xiàng)目的所有內(nèi)容下載,使用 IDE編譯或 maven 命令編譯時(shí)會(huì)加載所有依賴 jar 包。如果選擇此種方式獲取源代碼,耗時(shí)較長,請(qǐng)耐心等待。

          第二種方式是創(chuàng)建 Spring Boot 的 Maven 項(xiàng)目后間接獲取源代碼,這樣可以精準(zhǔn)下載所需要項(xiàng)目的依賴及源代碼。本書采用此種方式來獲取源代碼,以便更好地與實(shí)例相結(jié)合。該方式具體步驟如下。

          步驟 1 創(chuàng)建一 個(gè)簡單的 Spring Boot 項(xiàng)目。

          步驟 2 通過 IDE 導(dǎo)入或打開項(xiàng)目。

          步驟 3 pom.xml 文件中引 |入所需功能的 jar 包依賴。

          步驟 4 通過 IDE 獲取源代碼和文檔。(IDE 提供 下載源代碼或下載文檔功

          能,并自動(dòng)關(guān)聯(lián)。)

          調(diào)試 Spring Boot 的源代碼

          我們通常使用“實(shí)例+debug'方法對(duì) Spring Boot 源代碼進(jìn)行調(diào)試與追蹤。

          Spring Boot 默認(rèn)采用 main 方法啟動(dòng),入口方法為 SpringApplication 類的 run 方法。創(chuàng)建項(xiàng)目后會(huì)默認(rèn)生成類似以下入口類代碼:

          @SpringBootApplication
          public class DemoApplication
          public static void main(String[] args)
          {
          SpringApplication. run(DemoApplication.class, args);
          }
          }

          比如,需要學(xué)習(xí) SpringApplication 類初始化功能時(shí), 可進(jìn)入該類內(nèi)部,通過 IDE 下載相關(guān)源代碼,然后在具體位置打上斷點(diǎn),通過 debug 模式啟動(dòng)程序。當(dāng)程序運(yùn)行到斷點(diǎn)處時(shí),便可查看上下文相關(guān)信息及處理流程。

          讀者在實(shí)踐的過程中,涉及每個(gè)具體知識(shí)點(diǎn)的源代碼查看時(shí),可以先編寫具體實(shí)例,再 debug 運(yùn)行實(shí)例并通過斷點(diǎn)來跟蹤具體執(zhí)行流程。

          SpringBoot源代碼的目錄結(jié)構(gòu)

          Spring Boot 項(xiàng)目的目錄結(jié)構(gòu)分為兩部分,一部分 是整個(gè)開源項(xiàng)目的目錄結(jié)構(gòu),另-部分是細(xì)化到 jar 包級(jí)別的目錄結(jié)構(gòu)。下面我們一起從整體到局部了解 Spring Boo 項(xiàng)目的目錄結(jié)構(gòu)。

          Spring Boot 的整體項(xiàng)目結(jié)構(gòu)

          圖 1-1 所示是 Spring Boot 在 GitHub 上 2.2.1.RELEASE 版本源代碼頂層目錄結(jié)構(gòu)。


          不同版本之間的 Spring Boot 源代碼的頂層目錄結(jié)構(gòu)會(huì)有所變化,但并不影響其核心功能。2.2.x.RELEASE 版本由以下子模塊構(gòu)成。

          :spring-boot-project: Spring Boot 核心項(xiàng)目代碼,包含核心、工具、安全、文檔、starters等項(xiàng)目。

          spring-boot-tests: Spring Boot 部暑及集成的測試。

          關(guān)于頂層目錄結(jié)構(gòu),我們有個(gè)簡單了解即可,從 1.5.x 到 2. 1.x 再到 2.2.x 版本,該層級(jí)的目錄結(jié)構(gòu)在不停地發(fā)生變化。

          spring-boot-project 項(xiàng)目結(jié)構(gòu)

          spring-boot-project 目錄是在 Spring Boot 2.0 版本發(fā)布后新增的目錄層級(jí),并將原來在Spring Boot 1.5.x 版本中的一級(jí)模塊作為 spring-boot-project 的子模塊。該模塊包含了Spring Boot 所有的核心功能。

          -spring-boot: Spring Boot 核心代碼,也是入口類 SpringApplication 類所在項(xiàng)目,是本文重點(diǎn)介紹的內(nèi)容。

          -spring boot -actuator:提供應(yīng)用程序的監(jiān)控、統(tǒng)計(jì)、管理及自定義等相關(guān)功能。

          -spring -boot actuator -autoconfigure:針對(duì) actuator 提供的自動(dòng)配置功能


          -spring-boot-autoconfigure: Spring Boot 自動(dòng)配置核心功能,默認(rèn)集成了多種常見框架的自

          動(dòng)配置類等。

          .spring-boot-cli:命令工具,提供快速搭建項(xiàng)目原型、啟動(dòng)服務(wù)、執(zhí)行 Groovy 腳本等功能。

          -spring-boot- dependencies:依賴和插件的版本信息。

          -spring boot deutoos:開發(fā)者工具,提供熱部署、實(shí)時(shí)加載、禁用緩存等提升開發(fā)效率的功能。

          .spring-boot-docs:參考文檔相關(guān)內(nèi)容。

          spring-boot-parent: spring-boot-dependencies 的子模塊, 是其他項(xiàng)目的父模塊。

          -spring-boot properties-migrator: Spring Boot 2.0 版本新增的模塊,支持升級(jí)版本配置屬性的遷移。

          -spring boot starters: Spring Boot 以預(yù)定義的方式集成了其他應(yīng)用的 starter 集合。

          :spring-boot-test:測試功能相關(guān)代碼。

          -spring-boot-test- autoconfigure:測試功能自動(dòng)配置相關(guān)代碼。

          spring-boot-tools: Spring Boot 工具支持模塊,包含 Ant、Maven、Gradle 等構(gòu)建工具。

          本文以 spring-boot 和 spring-boot-autoconfigure 模塊為核心,同時(shí)會(huì)涉及 actuator、test.loader 等相關(guān)項(xiàng)目的源代碼。

          本文給大家講解的內(nèi)容是:獲取和調(diào)試SpringBoot源代碼、SpringBoot源代碼的目錄結(jié)構(gòu)

          1. 下篇文章給大家講解的是源代碼閱讀工具、SpringBoot的設(shè)計(jì)理念和目標(biāo)、整體架構(gòu);

          2. 覺得文章不錯(cuò)的朋友可以轉(zhuǎn)發(fā)此文關(guān)注小編;

          3. 感謝大家的支持!



          本文就是愿天堂沒有BUG給大家分享的內(nèi)容,大家有收獲的話可以分享下,想學(xué)習(xí)更多的話可以到微信公眾號(hào)里找我,我等你哦。

          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美成人操B视频 | 免费日韩一级 | www.日本黄色视频 | 人成视频在线播放 | 亚洲AV无码久久寂寞少妇多毛 |