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

目录
相关文章
WXM
|
2月前
|
Java 应用服务中间件 Maven
|
2月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。
|
1月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
32 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
1月前
|
前端开发 JavaScript Java
spring boot+vue前后端项目的分离(我的第一个前后端分离项目)
该博客文章介绍了作者构建的第一个前后端分离项目,使用Spring Boot和Vue技术栈,详细说明了前端Vue项目的搭建、后端Spring Boot项目的构建过程,包括依赖配置、数据库连接、服务层、数据访问层以及解决跨域问题的配置,并展示了项目的测试结果。
spring boot+vue前后端项目的分离(我的第一个前后端分离项目)
|
1月前
|
IDE Java Shell
如何快速搭建一个 Spring Boot 项目?
本指南介绍如何通过Spring Initializr创建一个基本的Spring Boot Web项目。首先访问`start.spring.io`,选择Maven项目、Java语言、Spring Boot版本3.1.0、Java 17,并勾选Spring Web依赖。点击“Generate”下载项目模板。解压后,IDE打开项目并修改`DemoApplication.java`,添加REST控制器以实现一个简单的“Hello World!”服务。通过`@RestController`和`@GetMapping`注解定义Web端点,使用`@RequestParam`获取URL参数。
|
1月前
|
IDE Java Shell
如何快速搭建一个 Spring Boot 项目?
Spring Boot 可以用最少的配置来快速创建一个独立的、生产级的 Spring 应用程序。 本文介绍如何快速搭建一个 Spring Boot「Hello World!」项目。
|
2月前
|
Java Spring
idea新建spring boot 项目右键无package及java类的选项
idea新建spring boot 项目右键无package及java类的选项
75 5
|
2月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
60 4
|
1月前
|
前端开发 Java 测试技术
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
|
1月前
|
设计模式 算法 Java
Spring Boot 项目怎么使用策略模式?
策略模式是一种设计模式,它允许在运行时选择不同的算法或行为。此模式通过定义一系列算法并将它们封装在独立的类中实现,这些类可以互相替换。这样可以根据不同情况动态选择最适合的算法。 在Spring框架中,可以通过依赖注入来实现策略模式。首先定义一个抽象策略类(接口或抽象类),然后创建具体策略类实现不同的算法。具体策略类通过`@Service`注解并在名称中指定特定的策略(如加法、减法等)。在上下文类(如Service类)中,通过`@Resource`注入策略对象的Map集合,根据需要选择并执行相应的策略。