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
可以看到 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 所有基础源码:
二、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-boot
和 spring-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-parent
和 spring-boot-starter-parent
都继承了 spring-boot-dependencies
所以我使用时,只要头部引入了父类(spring-boot-starter-parent
),就会发现有些依赖不需要写版本号。
spring-boot-dependencies
在 dependencyManagement
进行依赖管理,在 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 项目的插件。