SpringBoot:核心模块盘点
创始人
2024-03-27 16:33:50
0

spring-boot-project 是 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码,其中很多模块都是我们了解 spring-boot 的重点。

本篇内容包括:spring-boot-project 包介绍、Spring Boot 核心模块


文章目录

    • 一、spring-boot-project 包介绍
        • 1、Spring Boot 源码构成
        • 2、Spring Boot 核心技术包(spring-boot-project)
    • 二、Spring Boot 核心模块
        • 1、spring-boot
        • 2、spring-boot-actuator-autoconfigure
        • 3、spring-boot-actuator
        • 4、spring-boot-autoconfigure
        • 5、spring-boot-cli
        • 6、spring-boot-dependencies
        • 7、spring-boot-devtools
        • 8、spring-boot-docs
        • 9、spring-boot-parent
        • 10、spring-boot-properties-migrator
        • 11、spring-boot-starters
        • 12、spring-boot-test
        • 13、spring-boot-test-autoconfigure 模块
        • 14、spring-boot-tools 模块


一、spring-boot-project 包介绍

1、Spring Boot 源码构成

Spring Boot v2.1.0.RELEASE版本 源码地址:https://github.com/spring-projects/spring-boot/tree/v2.1.0.RELEASE

image-20221129025723993

可以看到 SpringBoot2.x 的源码主要包含 4 个包:spring-boot-project、spring-boot-samples、spring-boot-samples-invoker、spring-boot-test

  • spring-boot-project:为 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码
  • spring-boot-samples / spring-boot-samples-invoker:为 springboot 的案例包,在高版本后会删除此包
  • spring-boot-test:为 springboot 的测试包,包含了系统集成测试、部署测试、冒烟测试

2、Spring Boot 核心技术包(spring-boot-project)

我们知道 spring-boot-project 是 spring-boot 核心技术包,其中包含了 spring-boot 所有基础源码:

image-20221129025124772

二、Spring Boot 核心模块

1、spring-boot

spring-boot 包含模块:spring-core、spring-context

spring-boot 是 SpringBoot 的主模块,也是支持其他模块的核心模块,主要包含以下几点:

  • 提供了一个启动 Spring 应用的主类,并提供了一个相当方便的静态方法,它的主要是作用是负责创建和刷新 Spring 容器的上下文;
  • 内嵌式的并可自由选择搭配的 Web 应用容器,如:Tomcat、Jetty、Undertow 等;
  • 提供一个很方便的 Spring 容器上下文初始化器,包括合理记录日志默认参数的支持;
  • 对配置外部化的支持。

2、spring-boot-actuator-autoconfigure

spring-boot-actuator-autoconfigure 提供了 spring-boot-actuator 的自动配置功能。

3、spring-boot-actuator

当系统运行时,我们想要了解系统运行的情况,比如程序是否存活、Jvm 状态怎么样。这时就需要有相应的对外接口,来让我们能方便的、自动的获取这些信息,这就是 Actuator 提供的功能。

spring-boot-actuator 是 spring-boot 周边组件之一,主要是用来查询或监控 spring-boot 项目各种组件、各种维度的度量指标,比如环境变量信息、日志级别、spring bean 信息、组件(redis、mq、db)健康状态等,可以通过 jmx 技术或者 http 技术来使用 actuator。

4、spring-boot-autoconfigure

spring-boot-autoconfigure 使 SpringBoot 可以根据类路径下的内容自动执行一些公共的大型应用程序,并且提供的 @EnableAutoConfiguration 注解启用 Spring 上下文的自动配置的功能。

spring-bootspring-boot-autoconfigure 是 SpringBoot 最重要的两个模块。

5、spring-boot-cli

Ps:可能很多 Java 程序员做了很久的 Spring Boot 开发,却并不知道 Spring Boot 居然也有命令行工具。

SpringBoot 的命令行工具,用于编译和运行 Groovy 源程序,可以非常简单地编写和运行应用程序。它还可以监控文件,并在发生更改后自动重新编译并重新启动应用程序。

spring-boot-cli 具有以下点

  • 它可以用来快速启动 Spring 。
  • 它可以运行 Groovy 脚本,开发人员不需要编写很多样板代码,只需要关注业务逻辑。
  • Spring Boot CLI 是创建基于 Spring 的应用程序的最快方法。

6、spring-boot-dependencies

spring-boot-dependencies 管理着我们使用的大部分依赖版本,spring-boot-parentspring-boot-starter-parent 都继承了 spring-boot-dependencies 所以我使用时,只要头部引入了父类(spring-boot-starter-parent ),就会发现有些依赖不需要写版本号。

spring-boot-dependenciesdependencyManagement 进行依赖管理,在 pluginManagement 中进行插件管理。

7、spring-boot-devtools

spring-boot-devtools 开发者工具模块,可以使 Spring Boot 应用支持热部署(修改了代码自动重启应用),提高开发者的开发效率,无需手动重启 Spring Boot 应用。

这个模块的功能是可选的,只限于本地开发阶段,当打成整包运行时这些功能会被禁用。

8、spring-boot-docs

提供 Spring Boot 文档里的一些示例?

9、spring-boot-parent

其他项目的 parent,继承了 spring-boot-dependencies

10、spring-boot-properties-migrator

帮助开发者从 Spring Boot 1 迁移到 Spring Boot 2 。

11、spring-boot-starters

Spring Boot Starters 是一组方便的依赖描述符,您可以将它们包含在您的应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式服务,而无需搜索示例代码和复制粘贴大量依赖项描述符。

例如,如果想使用 Spring 和 JPA 进行数据库访问,只需将 spring-boot-starter-data-jpa 这一依赖项包含在项目中就可以开始了。

12、spring-boot-test

spring-boot-test 模块,是 SpringBoot 测试模块,为应用测试提供了许多非常有用的核心功能。

spring-boot-test 模块,为 Spring Boot 提供测试方面的支持,例如说:

  • SpringBootTestRandomPortEnvironmentPostProcessor 类,提供随机端口。
  • org.springframework.boot.test.mock.mockito 包,提供 Mockito 的增强。

13、spring-boot-test-autoconfigure 模块

提供了 spring-boot-test 的自动配置功能。

14、spring-boot-tools 模块

spring-boot-tools 模块,它是 Spring Boot 提供的工具箱,其内有多个子 Maven 项目。

注意哟,我们这里说的工具箱,并不是我们在 Java 里的工具类。

举个例子:其子模块 spring-boot-maven-plugin:提供 Maven 打包 Spring Boot 项目的插件。

相关内容

热门资讯

原创 他... John McAvoy 是一位来自英国的铁人三项运动员,创造了多个世界纪录,其中包括100,000米...
原创 高... 12月26日这一天,对日本右翼势力来说,具有非常特殊的意义,甚至可能成为东亚局势的一个重要导火索。日...
石景山检察院:侵犯知识产权犯罪... 新京报讯(记者张静姝)12月24日上午,北京市石景山区人民检察院(以下简称“石景山区检察院”)在中关...
暖心!女子买鸭起纠纷,拍摄者自... 智慧中国讯(马泽川)2025年12月26日,湖南衡阳一市场内上演了暖心一幕。一名女子在老人摊位购买鸭...
原创 民... 如今,律师这个职业在社会上的口碑并不特别好,主要原因是有些律师缺乏正义感。在律师圈里,有一些知名律师...
为促进民用航空事业高质量发展提... 法治日报全媒体记者 蒲晓磊 2025年12月27日,十四届全国人大常委会第十九次会议表决通过新修订的...
宁夏:严惩恶意欠薪违法犯罪 维... 原标题:严惩恶意欠薪违法犯罪 维护劳动者合法权益(主题) 宁夏:部署开展治理欠薪冬季专项行动(副题)...
镇江长江锚地纠纷,“枫警” 联... 现场 扬子晚报网12月27日讯(通讯员 滕超 记者 姜天圣)12月27日上午,长江镇江段定易洲锚地,...
原创 七... 他的名字叫余海水,虽然年已77岁,但他多次凭借聪明才智,在监狱里巧妙地演绎了一出又一出的障眼法。尽管...
玉泉区十大继承律师排名推荐:张... 在呼和浩特玉泉区的法律服务领域,继承纠纷往往牵涉复杂的情感纠葛与财产分配难题。当亲情与利益交织,一位...