Spring Boot 2.0系列文章(五):Spring Boot 2.0 項目源碼結構預覽

来源:https://www.cnblogs.com/zhisheng/archive/2018/04/24/8934501.html
-Advertisement-
Play Games

<! more 關註我 轉載請務必註明原創地址為: "http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/" 項目結構 結構分析: + Spring boot project 核心代碼,代碼量很多(197508 行) + Spring b ...


fireworks-2585843_1920

關註我

mark

轉載請務必註明原創地址為:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/

項目結構

springboot2001

結構分析:

  • Spring-boot-project 核心代碼,代碼量很多(197508 行)
  • Spring-boot-samples 一些樣例 demo,代碼量不多(9685 行),蠻有用的
  • Spring-boot-samples-invoker 裡面無代碼
  • Spring-boot-tests 測試代碼(1640 行)

spring-boot-project

Spring-boot-project 下麵有很多模塊,如下:

springboot2002

Spirng-boot

springboot

該模塊 47760 行代碼(含測試代碼),Spring boot 主要的庫,提供了支持 Spring Boot 其他部分的功能,其中包括了:

  • SpringApplication類,提供靜態便捷方法,可以很容易寫一個獨立的 Spring 應用程式。它唯一的工作就是創造並更新一個合適的 SpringApplicationContext
  • 帶有可選容器的嵌入式 Web 應用程式(Tomcat,Jetty 或 Undertow)
  • 一流的外部配置支持
  • 便捷ApplicationContext初始化程式,包括對敏感日誌記錄預設值的支持

spring-boot-actuator

springboot-actuator

該模塊 18398 行代碼(含測試代碼),spring-boot-actuator 模塊它完全是一個用於暴露自身信息的模塊,提供了一個監控和管理生產環境的模塊,可以使用 http、jmx、ssh、telnet 等管理和監控應用。審計(Auditing)、 健康(health)、數據採集(metrics gathering)會自動加入到應用裡面。

spring-boot-actuator-autoconfigure

springboot-actoator-autoconfig

該模塊 16721 行代碼(含測試代碼),Spring Boot Actuator 提供了額外的自動配置功能,可以在生產環境中實現可即時部署和支持的功能,從而裝飾你的應用。例如,如果您正在編寫 JSON Web 服務,那麼它將提供伺服器,安全性,日誌記錄,外部配置,管理端點,審計抽象等等功能。如果您想關閉內置功能,或者擴展或替換它們,它也會變得非常簡單。

spring-boot-autoconfigure

springboot-autoconfig

該模塊 51100 行代碼(含測試代碼), Spring Boot 可以根據類路徑的內容配置大部分常用應用程式。單個@EnableAutoConfiguration註釋會觸發 Spring上下文的自動配置。

自動配置嘗試推斷用戶可能需要哪些 bean。例如,如果 HSQLDB在類路徑中,並且用戶尚未配置任何資料庫連接,則他們可能需要定義記憶體資料庫。當用戶開始定義他們自己的 bean 時,自動配置將永遠遠離。

spring-boot-cli

springboot-cli

該模塊 9346 行代碼(含測試代碼),Spring 命令行應用程式編譯並運行 Groovy 源代碼,使得可以編寫少量代碼就能運行應用程式。Spring CLI 也可以監視文件,當它們改變時自動重新編譯並重新啟動。

spring-boot-dependencies

springboot-dependencies

該模塊裡面沒有源碼,只有所有依賴和插件的版本號信息。

spring-boot-devtools

springboot-devtools

該模塊 9418 行代碼(含測試代碼),spring-boot-devtools 模塊來使 Spring Boot 應用支持熱部署,提高開發者的開發效率,無需手動重啟 Spring Boot 應用。

spring-boot-docs

springboot-docs

該模塊 671 行代碼,springboot 參考文件。

spring-boot-parent

springboot-parent

該模塊是其他項目的 parent,該模塊的父模塊是 spring-boot-dependencies。

spring-boot-properties-migrator

springboot-properties-migrator

該模塊有 495 行代碼,在 Spring Boot 2.0 中,許多配置屬性被重新命名/刪除,開發人員需要更新application.properties/ application.yml相應的配置。為了幫助你解決這一問題,Spring Boot 發佈了一個新spring-boot-properties-migrator模塊。一旦作為該模塊作為依賴被添加到你的項目中,它不僅會分析應用程式的環境,而且還會在啟動時列印診斷信息,而且還會在運行時為您暫時遷移屬性。在您的應用程式遷移期間,這個模塊是必備的,完成遷移後,請確保從項目的依賴關係中刪除此模塊。

spring-boot-starters

springboot-starter

Starter POMs 是由很多方便的依賴集合組成,如果你需要使用某種技術,通過添加少量的jar就可以把相關的依賴加入到項目中去。

雖然你看得到有這麼多 starter,但是卻沒有一行 Java 代碼,意不意外?

springboot-starter-activemq

這確實是 Spring Boot 自動配置的關鍵之處,後面我可以講講。

spring-boot-test

測試代碼!有 10980 行代碼。

spring-boot-test-autoconfigure

自動配置的測試代碼,有 6063 行代碼。

spring-boot-tools

springboot-tools

  • spring-boot-antlib

Spring Boot AntLib 模塊為 Apache Ant 提供了基本的 Spring Boot 支持。 您可以使用該模塊創建可執行文件夾。 要使用該模塊,您需要在 build.xml 中聲明一個額外的 spring-boot 命名空間,如以下示例所示:

xml <project xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:spring-boot="antlib:org.springframework.boot.ant" name="myapp" default="build"> ... </project>

您需要記住使用 -lib 選項啟動 Ant,如以下示例所示:

ant -lib <folder containing spring-boot-antlib-2.1.0.BUILD-SNAPSHOT.jar>

  • Spring-boot-autoconfigure-processor

spring boot 自動配置的核心類

  • Spring-boot-configuration-metadata

Spring boot 配置元數據

  • Spring-boot-configuration-processor

spring boot 配置的核心

  • Spring-boot-gradle-plugin

Spring Boot Gradle 插件在 Gradle 中提供了 Spring Boot 支持,可以打包成可執行 jar 或 war ,運行 Spring Boot 應用程式,並使用 spring-boot-dependencies 提供的依賴關係管理。 它需要 Gradle 4.0 或更高版本。

  • Spring-boot-maven-plugin

Spring Boot Maven Plugin 在 Maven 中提供了 Spring Boot 支持,讓您可以打包成可執行 jar 或 war 應用,並“就地”運行應用程式。 要使用它,你必須使用 Maven 3.2(或更高版本)。

  • Spring-boot-loader

spring-boot-load 模塊通過自定義 jar 包結構,自定義類載入器,優雅的實現了嵌套 jar 資源的載入,通過打包時候重新設置啟動類和組織 jar 結構,通過運行時設置自定義載入器來實現嵌套 jar 資源載入。

  • Spring-boot-loader-tools

spring-boot-load 模塊的工具模塊

  • Spring-boot-test-support

測試

spring-boot-samples

springboot-samples

樣例 demo 比較多,大家看源碼的時候可以拿這些現成 demo 測試。

spring-boot-tests

springboot-tests

相關文章

1、Spring Boot 2.0系列文章(一):Spring Boot 2.0 遷移指南

2、Spring Boot 2.0系列文章(二):Spring Boot 2.0 新特性詳解

3、Spring Boot 2.0系列文章(三):Spring Boot 2.0 配置改變

4、Spring Boot 2.0系列文章(四):Spring Boot 2.0 源碼閱讀環境搭建

5、Spring Boot 2.0系列文章(五):Spring Boot 2.0 項目源碼結構預覽

6、Spring Boot 2.0系列文章(六):Spring boot 2.0 中 SpringBootApplication 註解詳解

總結

本文主要分析了下 Spring boot 項目源碼結構。包含 Spring boot 核心源碼、樣例 demo、測試。分析了項目的整體結構後,後面才能夠有的放矢的去讀源碼。

最後

雖然源碼很難,但隨著不斷的探索,源碼在你面前將會一覽無遺,享受這種探索後的成就感!加油!騷年!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看到小程式這一大串的“Do not have bindName handler in current page: pages/card/card. Please make sure that bindName handler has been defined in pages/card/card, ... ...
  • Qone 下一代 Web 查詢語言,使 javascript 支持 LINQ Github: "https://github.com/dntzhang/qone" 緣由 最近剛好修改了騰訊文檔 Excel 表格公式的一些 bug,主要是修改公式的 parser 。比如下麵的腳本怎麼轉成 javasc ...
  • 個人是這麼理解深拷貝和淺拷貝的:就是假設B複製了A,當修改A時,看B是否會發生變化,如果B也跟著變了,說明這是淺拷貝,拿人手短,如果B沒變,那就是深拷貝,自食其力。 一起看看我舉的淺拷貝慄子: 運行結果是:a數組元素跟著b數組改變 在來看看深拷貝的慄子 運行結果:a數組元素未隨b數組改變 ...
  • 圖片上傳 /static/img/H5_addPhoto.png" alt="picture"> /*圖片上傳*/ .photo - box { padding: 10 px; display: inline - block; } ... ...
  • 手把手教你寫網路爬蟲(6) 作者:拓海 摘要:從零開始寫爬蟲,初學者的速成指南! 封面: 下麵是一個超級電腦的排行榜,如果我們能擁有其中任意一個,那麼我們就不需要搞什麼分散式系統。可是我們買不起,即使買得起,也交不起電費,所以我們只好費腦子搞分散式。 Rank System Cores Rmax ...
  • 一、文件的打開與關閉 1. 文件的打開 在python,使用open函數,可以打開一個已經存在的文件,或者創建一個新文件。 示例如下: f = open('test.txt', 'w') 2. 文件的關閉 示例如下: 註意:文件打開,執行必要的操作後必須要關閉。 但是我們總是經常忘記關閉它,怎麼辦呢 ...
  • 之前的文章中,分別從APS,排產到規劃引擎敘述了一些理論基礎;並介紹了一些Optaplanner大概的情況;並一步步將Optaplanner的示例運行起來,將示例源碼導進Eclipse分析了一下它的Hello world入門示例,從本篇開始,我們將分步學習它的一些概念及用法。 什麼是Optaplan ...
  • java中的一些概念彙總 什麼是Java虛擬機?為什麼Java被稱作是“平臺無關的編程語言”? Java虛擬機是一個可以執行Java位元組碼的虛擬機進程。Java源文件被編譯成能被Java虛 擬機執行的位元組碼文件。 Java被設計成允許應用程式可以運行在任意的平臺,而不需要程式員為每一個平臺單獨重 寫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...