Spring Boot 项目介绍

简介: 本篇 带大家先了解 Spring Boot 项目的基本内容,为后面的源码学习打下基础

微信图片_20231031101034.png

引言

作为学习过 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 版本源代码顶层目录结构:

image.png

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

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

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

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

image.png

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

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

image.png

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

总结

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

参考

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

目录
相关文章
|
24天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
38 2
|
2月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
39 1
Spring MVC——项目创建和建立请求连接
|
2月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
142 1
Maven——创建 Spring Boot项目
|
5月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
2月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
40 1
如何使用 maven 创建一个 Spring Boot项目
|
2月前
|
Java 应用服务中间件 Android开发
Eclipse创建Spring项目
本文介绍了在Eclipse中创建Spring项目的步骤,包括如何配置Tomcat服务器、创建项目、部署项目到Tomcat以及添加Spring框架所需的JAR包。
71 1
Eclipse创建Spring项目
|
2月前
|
Java Spring
ij社区版如何创建spring项目
如何在IntelliJ IDEA社区版中创建Spring项目,包括安装Spring Boot Helper插件的步骤和创建过程。
74 1
ij社区版如何创建spring项目
|
2月前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
2月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
60 2
|
2月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
204 2