<! more 關註我 轉載請務必註明原創地址為: "http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/" 項目結構 結構分析: + Spring boot project 核心代碼,代碼量很多(197508 行) + Spring b ...
關註我
轉載請務必註明原創地址為:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/
項目結構
結構分析:
- 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 命名空間,如以下示例所示:
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
樣例 demo 比較多,大家看源碼的時候可以拿這些現成 demo 測試。
spring-boot-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、測試。分析了項目的整體結構後,後面才能夠有的放矢的去讀源碼。
最後
雖然源碼很難,但隨著不斷的探索,源碼在你面前將會一覽無遺,享受這種探索後的成就感!加油!騷年!