Spring Boot 2.0 項目源碼結構預覽

項目結構

結構分析:

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

spring-boot-project

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

Spirng-boot

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

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

spring-boot-actuator

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

spring-boot-actuator-autoconfigure

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

spring-boot-autoconfigure

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

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

spring-boot-cli

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

spring-boot-dependencies

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

spring-boot-devtools

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

spring-boot-docs

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

spring-boot-parent

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

spring-boot-properties-migrator

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

spring-boot-starters

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

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

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

spring-boot-test

測試代碼!有 10980 行代碼。

spring-boot-test-autoconfigure

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

spring-boot-tools

spring-boot-antlib

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

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

  • 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

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

spring-boot-tests

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

最後

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章