Spring Boot 项目介绍

《Spring Boot 源码学习系列》

在这里插入图片描述

引言

作为学习过 Java 的软件开发者,相信都知道 Spring 这一伟大的框架,它所拥有的强大功能之一就是可以集成各种开源软件。但随着互联网的高速发展,各种框架层出不穷,这就对系统架构的灵活性、扩展性、可伸缩性 和 高可用性都提出了新的要求。

随着项目的发展,Spring 慢慢地集成了更多的开源软件,引入大量配置文件,这会导致程序出错率高、运行效率低下的问题。为了解决这些状况,Spring Boot 应运而生。

Spring Boot 本身并不提供 Spring 的核心功能,而是作为 Spring 的脚手架框架,以达到快速构建项目、预置三方配置、开箱即用的目的。

项目介绍

1. 设计理念

约定优于配置(Convention Over Configuration),又称按约定编程,是一种软件设计范式,旨在减少软件开发人员需要做决定的数量,执行起来简单而又不失灵活。Spring Boot 的核心设计就完美遵从了此范式。

Spring Boot 的功能从细节到整体都是基于 ”约定优于配置“ 来开发的,从基础框架的搭建、配置文件、中间件的集成、内置容器以及其生态中的各种 Starters,无不遵从此设计范式。

Starter 作为 Spring Boot 的核心功能之一,基于自动配置代码提供了自动配置模块及依赖,让软件集成变得简单、易用。我们也可以创建自己的 Starter,来使我们的应用接入 Spring Boot。

2. 设计目标

说到 Spring Boot 的设计目标,就不得不提到它的研发团队–Pivotal 公司。该公司的企业目标是 “致力于改变世界构造软件的方式(We are transforming how the world builds software)”

Spring Boot 框架的设计理念完美遵从了它所属企业的目标。Spring Boot 不是为已解决的问题提供新的解决方案,而是为平台和开发者带来一种全新的体验:

整合成熟技术框架、屏蔽系统复杂性、简化已有技术的使用,从而降低软件的使用门槛,提升软件开发和运维的效率。

3. 源代码的目录结构

Spring Boot 源代码地址

知识点: Spring Boot 2.3.x 系列版本开始用 Gradle 构建 ,2.2.x 及之前 的系列版本都用 Maven 构建。

Spring Boot 项目的目录结构分为两部分,一部分是整个开源项目的目录结构,另一部分是细化到 jar 包级别的目录结构。

下面我们从整体到局部一起了解下 Spring Boot 项目的目录结构。

首先从整体出发,如下图所示是 Spring BootGitHub3.0.2 版本源代码顶层目录结构:

在这里插入图片描述

不同版本之间的 Spring Boot 源代码的顶层目录结构会有所变化,但并不影响其核心功能。

目录名描述
spring-boot-projectSpring Boot 核心项目代码,包含核心、工具、安全、文档、starters等项目。
spring-boot-system-testsSpring Boot 部署和镜像测试。
spring-boot-testsSpring Boot 集成和冒烟的测试。

关于顶层目录结构,简单了解即可,从 1.5.x3.0.x 版本,该层级的目录结构在不停地发生变化。

然后从局部出发,如下图所示是 spring-boot-projectGitHub3.0.2 版本源代码的目录结构:

在这里插入图片描述

spring-boot-project 目录是在 Spring Boot 2.0 版本发布后新增的目录层级,并将原来在 Spring Boot 1.5.x 版本中的一级模块作为 spring-boot-project 的子模块。该模块包含了 Spring Boot 所有的核心功能。

目录名描述
spring-bootSpring Boot 核心代码,也是入口类 SpringApplication 类所在项目。
spring-boot-actuator提供应用程序的监控、统计、管理及自定义等相关功能。
spring-boot-actuator-autoconfigure针对 actuator 提供的自动配置功能。
spring-boot-autoconfigureSpring Boot 自动配置核心功能,默认集成了多种常用框架的自动配置类等。
spring-boot-cli命令工具,提供快速搭建项目原型、启动服务、执行 Groovy 脚本等功能。3.0.x 版本开始被移除。
spring-boot-dependencies依赖和插件的版本信息。
spring-boot-devtools开发者工具,提供热部署、实时加载、禁用缓存等提升开发效率的功能。
spring-boot-docs参考文档相关内容。
spring-boot-parentspring-boot-dependencies 的子模块,是其他项目的父模块。
spring-boot-properties-migratorSpring Boot 2.0 版本新增的模块,支持升级版本配置属性的迁移。3.0.x 版本开始被移除。
spring-boot-startersSpring Boot 以预定义的方式集成了其他应用的 starter 集合。
spring-boot-test测试功能相关代码。
spring-boot-test-autoconfigure测试功能自动配置相关代码。
spring-boot-toolsSpring Boot 工具支持模块,包含 AntMavenGradle 等构建工具。

4. 整体架构

上面给大家介绍了 Spring Boot 的核心项目结构及功能,下面我们从架构层面了解一下 Spring Boot 的不同模块之间的依赖关系。

为了更清晰地表达 Spring Boot 各项目之间的关系,在下图中我们基于依赖的传递性,省略了部分依赖关系。

比如,Spring Boot Starters 不仅依赖了 Spring Boot Autoconfigure 项目,还依赖了 Spring BootSpring,而 Spring Boot Autoconfigure 项目又依赖了 Spring BootSpring Boot 又依赖了 Spring 相关项目。因而在下图中就省略了 Spring Boot Starters 和 底层依赖的关联。

同样,Spring Boot ParentSpring Boot 及图中依赖 Spring Boot 项目的 Parent 项目,为了结构清晰,图中不显示相关关联。

在这里插入图片描述

从上图中我们可以看出 Spring Boot 几乎完全基于 Spring,同时提供了 Spring BootSpring Boot Autoconfigure 两个核心的模块,而其他相关功能又都是基于这两个核心模块展开的。

总结

到目前为止,Spring Boot 的最新发布版为 3.0.2,该项目也在不断的更新和迭代中,上述介绍可能会有遗漏或差异,请至 官方 GitHub 查阅详情。

参考

Spring Boot 技术内幕-架构设计与实现原理》朱智胜

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huazie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值