Spring Boot 核心模塊詳解(12 個(gè)模塊詳解及作用說明)
1、Spring Boot 項(xiàng)目介紹
Spring Boot 是 Spring 全家桶項(xiàng)目中的一個(gè)子項(xiàng)目,也是 Spring 組件應(yīng)用一站式解決方案,它基于 Spring 框架,主要作用是通過 “約定優(yōu)于配置” 的核心思想,顯著降低了 Spring 應(yīng)用的門檻,讓開發(fā)者能夠快速構(gòu)建生產(chǎn)級(jí)的獨(dú)立應(yīng)用。所以現(xiàn)在 Spring Boot 也成了后端標(biāo)準(zhǔn)的開發(fā)框架。
和 Spring 框架一樣,Spring Boot 框架也是由許多核心模塊組成的,每個(gè)模塊負(fù)責(zé)不同的功能點(diǎn),本文講著重于介紹 Spring Boot 相關(guān)的 12 個(gè)模塊的作用和功能。
下圖為 Spring-Boot 3.x 項(xiàng)目結(jié)構(gòu)截圖(模塊介紹的結(jié)構(gòu)以 Spring-Boot 3.x 為主):
2、Spring Boot 各模塊介紹
2.1、spring-boot
這是 Spring Boot 框架的主模塊,也是支持其他模塊的核心模塊,主要功能如下:
- 提供了一個(gè)啟動(dòng) Spring 應(yīng)用的主類,并提供了一個(gè)相當(dāng)方便的靜態(tài)方法,它的主要作用是負(fù)責(zé)創(chuàng)建和刷新 Spring 容器的上下文;
- 提供了內(nèi)嵌式的并可自由選擇搭配的 Servlet 應(yīng)用容器,如 Tomcat、Jetty、Undertow 等;
- 提供了一流的配置外部化支持;
- 提供了一個(gè)很方便的 Spring 容器上下文初始化器,包括對(duì)合理記錄日志默認(rèn)參數(shù)的支持。
2.2、spring-boot-autoconfigure
這個(gè)模塊提供了常用的 Java 主流技術(shù)的自動(dòng)配置組件,其提供的 @EnableAutoConfifiguration 注解就能啟用 Spring Boot 的自動(dòng)配置功能,它能根據(jù)類路徑下的內(nèi)容決定是否自動(dòng)配置。
- 作用:實(shí)現(xiàn)自動(dòng)配置的核心模塊。
- 解釋:Spring Boot 通過這個(gè)模塊根據(jù)當(dāng)前 classpath 中的依賴、配置和類自動(dòng)裝配 Spring Bean,極大地簡化了配置流程。比如你引入了
spring-boot-starter-web
,它就會(huì)自動(dòng)配置DispatcherServlet
、Tomcat
、Jackson
等。
2.3、spring-boot-actuator:
這是 Spring Boot 提供的監(jiān)控模塊,比如,它提供了健康端點(diǎn)、環(huán)境端點(diǎn)、Spring Bean 端點(diǎn)等端點(diǎn),可以更好地幫助開發(fā)者監(jiān)控應(yīng)用并和應(yīng)用進(jìn)行交互。
- 作用:提供生產(chǎn)環(huán)境中應(yīng)用監(jiān)控和管理的功能。
- 解釋:包括健康檢查、應(yīng)用指標(biāo)、信息、環(huán)境變量、線程、日志級(jí)別等端點(diǎn)(比如
/actuator/health
、/actuator/metrics
)。
2.4、spring-boot-actuato-autoconfigure:
這個(gè)模塊是為 spring-boot-actuator 監(jiān)控模塊提供自動(dòng)配置的模塊。
- 作用:為 Actuator 提供自動(dòng)配置支持。
- 解釋:是 actuator 的自動(dòng)配置部分,讓你無需手動(dòng)注冊和配置每個(gè)監(jiān)控端點(diǎn),比如
HealthEndpointAutoConfiguration
等類。
2.5、spring-boot-parent
Parent POM,位于 Spring Boot 的底層模塊中,專門用于管理構(gòu)建插件、通用屬性、構(gòu)建 profile 等基礎(chǔ)配置。
它不是專門給用戶直接使用的,而是 Spring Boot 自己用來構(gòu)建 starter、autoconfigure 等模塊的父級(jí)。
而為用戶準(zhǔn)備的 Parent POM 是 spring-boot-starter-parent 模塊,它簡化了用戶項(xiàng)目配置,同時(shí)繼承自 spring-boot-parent
2.6、spring-boot-dependencies
只管理各種依賴的版本,不包含任何構(gòu)建配置或插件設(shè)置。
可以用它來:
- 替代 Spring Boot 提供的 Parent
- 在自己的 Parent 項(xiàng)目中引用它,來享受 Spring Boot 提供的版本管理
2.7、spring-boot-test:
這是模塊是 Spring Boot 的測試模塊,為應(yīng)用提供了許多非常有用的單元測試功能,包含了單元測試所需要的 常用注解、斷言、mock 支持、TestContext 框架集成 等內(nèi)容。
- 常用測試注解:
@SpringBootTest
,@MockBean
,@SpyBean
,@TestComponent
,@TestConfiguration
等; - 斷言工具:
AssertJ
集成、TestRestTemplate
、OutputCapture
等; - 模擬框架集成:支持 Mockito、Hamcrest、AssertJ;
- TestContext 支持:整合 Spring 測試上下文加載邏輯;
- 環(huán)境隔離工具:
@DirtiesContext
,@TestPropertySource
; - 應(yīng)用上下文加載:測試時(shí)自動(dòng)加載配置文件、Bean、環(huán)境等。
2.8、spring-boot-test-autoconfigure
這個(gè)模塊是為 spring-boot-test 測試模塊提供自動(dòng)配置的模塊。提供 一組自動(dòng)化配置的測試切片(Test Slice),用于做快速、輕量級(jí)的單元測試,只加載部分上下文(而不是整個(gè)應(yīng)用)。
@WebMvcTest
:只加載 MVC 相關(guān)組件(不加載 Service/Repository)@DataJpaTest
:加載 JPA Repository + 內(nèi)存數(shù)據(jù)庫(不加載 Web 層)…
2.9、spring-boot-devtools
spring-boot-devtools 是一個(gè)專為本地開發(fā)環(huán)境優(yōu)化體驗(yàn)的開發(fā)者工具模塊,主要用于Spring Boot應(yīng)用的開發(fā)階段,它提供了一些顯著提升開發(fā)效率的特性:自動(dòng)重啟、LiveReload、禁用緩存等功能,讓開發(fā)過程更高效流暢。這個(gè)模塊的功能是可選的,只限于本地開發(fā)環(huán)境,當(dāng)打成整包運(yùn)行時(shí),這些功能會(huì)自動(dòng)被禁用。
- 自動(dòng)重啟:代碼、配置文件等發(fā)生變更時(shí)自動(dòng)重啟 Spring Boot 應(yīng)用(比熱部署更快);
- LiveReload 支持:自動(dòng)刷新瀏覽器頁面(前提是瀏覽器安裝 LiveReload 插件);
- 禁用緩存:頁面模板不緩存(Thymeleaf、FreeMarker、Mustache),改完立即生效;
- 熱加載靜態(tài)資源支持:修改 static 文件夾中的資源時(shí),頁面自動(dòng)刷新。
2.10、spring-boot-doc
spring-boot-docs 是 Spring Boot 官方文檔的源碼模塊,用于生成 Spring Boot 的參考文檔站點(diǎn)。
2.11、spring-boot-starters
spring-boot-starters 是 Spring Boot 提供的一組模塊化依賴集合,用于快速集成常用功能(Web、JPA、Security、Thymeleaf等)。它本身是一個(gè) 聚合模塊(parent module),主要用于組織和管理所有 starter。
spring-boot-starters ├── spring-boot-starter ├── spring-boot-starter-web ├── spring-boot-starter-data-jpa ├── spring-boot-starter-security ├── spring-boot-starter-thymeleaf ├── spring-boot-starter-test ├── ...
2.12、spring-boot-tools
spring-boot-tools 是 Spring Boot 內(nèi)部使用的一組工具類模塊集合,服務(wù)于打包、加載、開發(fā)效率提升等目的,通常由插件或構(gòu)建系統(tǒng)間接使用。
spring-boot-tools ├── spring-boot-loader ← 打包可執(zhí)行 JAR 的核心 ├── spring-boot-buildpack-platform ← 支持 buildpack 容器構(gòu)建 ├── spring-boot-buildpack-tools ← buildpack 構(gòu)建邏輯 ├── spring-boot-docker-compose ← 支持 docker-compose 自動(dòng)管理 ├── spring-boot-antlib ← 支持 Apache Ant 構(gòu)建 ├── ...
X、后記
Spring Boot 的設(shè)計(jì)不僅追求極致的開發(fā)效率,還為系統(tǒng)可維護(hù)性和擴(kuò)展性提供了堅(jiān)實(shí)的架構(gòu)基礎(chǔ)。掌握這些核心模塊的職責(zé)與配合方式,能夠幫助我們在實(shí)際項(xiàng)目中更加靈活地集成功能、排查問題或做性能優(yōu)化。
希望這篇文章能為你在使用或深入理解 Spring Boot 的過程中提供一些實(shí)用的參考。如果你覺得有幫助,歡迎點(diǎn)贊收藏,也可以留言交流你的見解與實(shí)踐經(jīng)驗(yàn)。
- idea創(chuàng)建Springboot多模塊項(xiàng)目(聚合項(xiàng)目)
- springboot多模塊項(xiàng)目mvn打包遇到存在依賴但卻無法發(fā)現(xiàn)符號(hào)問題
- springboot starter自定義實(shí)現(xiàn)公共模塊方式
- springboot的maven多模塊混淆jar包的實(shí)現(xiàn)方法
- ruoyi-springboot框架新增模塊調(diào)接口報(bào)404的解決方案
- SpringBoot?+?proguard+maven多模塊實(shí)現(xiàn)代碼混淆的方法
- springboot項(xiàng)目父子多模塊打包方式
- springboot下添加日志模塊和設(shè)置日志文件輸出的方法
相關(guān)文章
springboot如何添加task任務(wù)執(zhí)行隊(duì)列
這篇文章主要介紹了springboot如何添加task任務(wù)執(zhí)行隊(duì)列問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07關(guān)于Java項(xiàng)目讀取resources資源文件路徑的那點(diǎn)事
這篇文章主要介紹了關(guān)于Java項(xiàng)目讀取resources資源文件路徑的那點(diǎn)事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07使用RocketMQTemplate發(fā)送帶tags的消息
這篇文章主要介紹了使用RocketMQTemplate發(fā)送帶tags的消息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Mybatisplus多表關(guān)聯(lián)分頁查詢多種實(shí)現(xiàn)方式
本文主要介紹了Mybatisplus多表關(guān)聯(lián)分頁查詢多種實(shí)現(xiàn)方式,包括使用XML自定義SQL、Wrapper搭配自定義SQL、使用DTO與自定義SQL及結(jié)合PageHelper實(shí)現(xiàn)分頁查詢,感興趣的可以了解一下2025-03-03myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問題
這篇文章主要介紹了myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11