SpringBoot的设计理念和目标、整体架构你有深入了解吗

开发 后端 架构
本文使用 Itellj IDEA (简称 IDEA) 作为阅读代码工具,采用纯源代码阅读、实例+debug 两种模式配合进行学习。

源代码阅读工具

读者可根据日常习惯,选择熟悉的代码阅读 I 具,比如 Intellij IDEA、Spring Tool Suite、Eclipse、 MyEclipse 等。

阅读 Spring Boot 源代码之前,我们还需搭建基础阅读环境。Spring Boot 对 JDK 和构建工具有一定的要求, 比如 JDK 8+、Maven 3.3+、Gradle 5.x+等环境,满足相应需求即可。

为了达到更好的学习效果,建议大家使用实例+debug 的模式来进行学习。因此,源代码阅读 I 具最好支持实例的编写、运行、调试等功能。

本文使用 Itellj IDEA (简称 IDEA) 作为阅读代码工具,采用纯源代码阅读、实例+debug 两种模式配合进行学习。

其中纯源代码阅读模式可以帮助我们更好地进行代码的注释、编写、单元测试等操作,而实例+debug 模式可以让我们更好地理解整个项目的运行流程及功能的具体使用。图 1-2 和图1-3 展示 了通过 IDEA 阅读代码的两种模式。

 

 

 

 

Spring Boot 的设计理念和目标

我们知道,Spring 所拥有的强大功能之一就是可以集成各种开源软件。 但随着互联网的高速发展,各种框架层出不穷,这就对系统架构的灵活性、扩展性、可伸缩性、高可用性都提出了新的要求。随着项目的发展,Spring 慢慢地集成了更多的开源软件,引入大量配置文件,这会导致程序出错率高、运行效率低下的问题。为了解决这些状况,Spring Boot 应运而生。

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

[[345193]]

 

设计理念

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

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

作为 Spring Boot 的核心功能之一,基于自动配置代码提供了自动配置模块及依赖,让软件集成变得简单、易用。与此同时,Spring Boot 也在鼓励各方软件组织创建自己的 Starter。

设计目标

说到 Spring Boot 的设计目标,值得一提的是 Spring Boot 的研发团队一 Pivotal 公司。Pivotal公司的企业目 标是致力于改变世界构造软件的方式(Weare transforming how the worldbuilds software)”。 Pivotal 公 司向企业客户提供云原生应用开发 PaaS 平台及服务,采用敏捷软件开发方法论帮助企业客户开发软件,从而提高软件开发人员工作效率、减少软件运维成本,实现企业数字化转型、IT 创新,帮助企业客户最终实现业务创新。

Spring Boot 框架的设计理念完美遵从了它所属企业的目标。Spring Boot 不是为已解决的问题提供新的解决方案,而是为平台和开发者带来一种全新的体验:整合成熟技术框架、屏蔽系统复杂性、简化已有技术的使用,从而降低软件的使用]槛,提升软件开发和运维的效率。

Spring Boot 的整体架构

在 1.2 节中已经对 Spring Boot 的核心项目结构及功能做了相应的介绍,本节我们从架构层面 了 解 一 下 Spring Boot 的 不同模 块之间的依 赖 关 系 如 图 1-4 所示 。

 

 

图 1-4 中为了更清晰地表达 Spring Boot 各项目之间的关系,我们基于依赖的传递性,省略了部分依赖关系。比如,Spring Boot Starters 不仅依赖了 Spring Boot Autoconfigure 项目,还依赖了 Spring Boot 和 Spring,而 SpringBoot Autoconfigure 项目又依赖了 Spring Boot,Spring Boot 又依赖了 Spring 相关项目。因此在图中就省略了 Spring Boot Starters 和底层依赖的关联。

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

从图 1-4 中我们可以清晰地看到 Spring Boot 几乎完全基于 Spring,同时提供了 Spring Boot和 Spring Boot Autoconfigure 两个核心的模块,而其他相关功能又都是基于这两个核心模块展开的。本文相关的源代码分析也是围绕两个核心模块展开。 

责任编辑:庞桂玉 来源: 今日头条
相关推荐

2021-08-19 08:59:51

B端C端设计

2022-02-28 10:30:03

架构代码Native

2015-11-06 09:39:52

2015-11-06 10:52:51

2024-08-21 08:00:00

2023-10-31 09:13:16

CPUIntel前端

2010-01-06 17:18:54

Linux常用软件

2010-11-19 16:22:14

Oracle事务

2010-06-23 20:31:54

2010-07-13 09:36:25

2022-08-26 13:48:40

EPUBLinux

2009-08-25 16:27:10

Mscomm控件

2020-09-21 09:53:04

FlexCSS开发

2020-07-20 06:35:55

BashLinux

2023-10-06 00:04:02

2015-08-25 09:43:50

交互设计五大支柱

2020-09-21 05:58:40

深度学习算法目标检测

2019-11-29 16:21:22

Spring框架集成

2019-08-02 08:59:21

Token认证服务器

2017-01-20 08:30:19

JavaScriptfor循环
点赞
收藏

51CTO技术栈公众号