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 技术内幕-架构设计与实现原理》朱智胜

目录
相关文章
|
8月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
719 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
7月前
|
前端开发 安全 Java
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
288 0
|
8月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
150 0
|
8月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
985 0
|
4月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
395 5
|
4月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
231 0
|
4月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
404 0
|
4月前
|
前端开发 Java API
酒店管理系统基于 JavaFX Spring Boot 和 React 经典项目重构实操
本文介绍了基于现代技术栈的酒店管理系统开发方案,整合了JavaFX、Spring Boot和React三大技术框架。系统采用前后端分离架构,JavaFX构建桌面客户端,React开发Web管理界面,Spring Boot提供RESTful API后端服务。核心功能模块包括客房管理和客户预订流程,文中提供了JavaFX实现的客房管理界面代码示例和React开发的预订组件代码,展示了如何实现客房信息展示、添加修改操作以及在线预订功能。
296 0
|
4月前
|
Java 应用服务中间件 Maven
第01课:Spring Boot开发环境搭建和项目启动
第01课:Spring Boot开发环境搭建和项目启动
650 0