2. [宏观视角] Spring 框架概述

2. [宏观视角] Spring 框架概述

摘要: 本章我们将建立对 Spring 框架的整体认知,梳理 Spring 6.x 的核心模块构成,并总结其轻量非侵入IoCAOP等关键特性。


2.1. Spring 简介:为简化开发而生

Spring 是一个由 Rod Johnson 创建的开源 Java 框架,它的诞生是为了解决早期企业级应用(特别是 EJB)开发的复杂性、臃肿以及难以测试等问题。我们可以将 Spring 的核心价值概括为:它是一个轻量级的控制反转(IoC)面向切面(AOP)的容器框架。

Spring 的最终目标是为我们简化开发,让我们能将精力完全集中在核心业务逻辑的实现上,而尽可能少地关注那些非业务性的代码,如事务控制、安全日志等。从简单性、可测试性和松耦合的角度出发,任何 Java 应用都可以从 Spring 中受益。


2.2. Spring 6.x 核心模块全景图

进入 Spring 6.x 时代,整个框架由大约 8 个模块组成,这些模块按功能被清晰地划分到不同的组中。理解这些模块的构成,有助于我们从宏观上把握 Spring 的能力版图。

我们通过下面这张图,可以对 Spring 框架的核心构成有一个直观的理解。这些模块就像乐高积木,我们可以按需组合,构建出强大的应用程序。

image.png

下表清晰地总结了这些核心模块的功能:

模块 (Module)核心功能描述
Spring Core(框架基石) 实现了 控制反转 (IoC),是所有功能的基础。
Spring AOP(切面编程) 提供完整的 面向切面编程 支持,用于解耦业务与横切关注点。
Spring DAO(数据访问) 对原生 JDBC 进行了抽象和封装,简化了数据访问代码。
Spring ORM(对象关系映射) 提供对 MyBatisHibernate 等主流 ORM 框架的集成支持。
Spring Context(应用上下文) 提供国际化、事件传播、JNDI 等企业级服务,是框架功能的延伸。
Spring Web MVC(Web 框架) Spring 自带的、成熟的 MVC 框架,用于开发传统的 Servlet Web 应用。
Spring Webflux(响应式 Web) 完全异步、非阻塞的 响应式 Web 框架,适用于高并发场景。
Spring Web(集成支持) 用于集成 Struts 等早期的第三方 Web 框架。

在现代开发中,我们主要使用 Spring Web MVCSpring Webflux,而 Spring Web 模块已较少使用

我们上篇系列教程以 Spring Core 为准,对于一些 Springboot 的知识,在 Spring 框架中其实也可以直接使用,所以我们会以对比的形式,大家可以直接学习 SpringBoot 的相关语法,原生 Spring6 涉及到 xml 配置的语法简单过一下即可,开发不会再使用!


2.3. Spring 的核心特性总结

Spring 之所以能在众多框架中脱颖而出,得益于其一系列优雅且强大的核心特性。我们可以将其归纳如下:

核心特性说明
轻量无论是 JAR 包大小还是运行时资源开销,Spring 都极其轻量,对系统性能影响微乎其微。
非侵入式业务代码不依赖于 Spring 的特定 API,可以轻松地在不同环境中复用和测试。
控制反转 (IoC)Spring 的灵魂。通过 IoC 技术促进松耦合,由容器被动地将依赖注入对象,而非对象主动索取。
面向切面 (AOP)提供对 AOP 的丰富支持,允许我们将业务逻辑与系统服务(如事务、日志)优雅地分离。
容器Spring 是一个强大的容器,负责管理对象的配置、创建、装配及其完整的生命周期。
框架Spring 将简单的组件通过声明式(XML 或注解)的方式组合成复杂的应用,并提供丰富的基础设施。

2.4. [重要] 本教程技术栈版本总览

为了确保内容的前沿性与准确性,我们在本教程中将统一使用以下技术栈版本:

  • 开发工具 (IDE): IntelliJ IDEA 2024.1.4
  • 构建工具 (Build Tool): Apache Maven 3.9.11
  • 项目 JDK: Java 17
  • Spring Framework: 6.2.9
  • 测试框架 (Testing): JUnit 5.13.4

请注意,Spring Framework 6.x 要求 JDK 的最低版本为 Java 17。在开始学习前,请务必确保您的开发环境符合要求。