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

2. [宏观视角] Spring 框架概述
Prorise2. [宏观视角] Spring 框架概述
摘要: 本章我们将建立对 Spring 框架的整体认知,梳理 Spring 6.x 的核心模块构成,并总结其轻量、非侵入、IoC和AOP等关键特性。
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 框架的核心构成有一个直观的理解。这些模块就像乐高积木,我们可以按需组合,构建出强大的应用程序。
下表清晰地总结了这些核心模块的功能:
模块 (Module) | 核心功能描述 |
---|---|
Spring Core | (框架基石) 实现了 控制反转 (IoC),是所有功能的基础。 |
Spring AOP | (切面编程) 提供完整的 面向切面编程 支持,用于解耦业务与横切关注点。 |
Spring DAO | (数据访问) 对原生 JDBC 进行了抽象和封装,简化了数据访问代码。 |
Spring ORM | (对象关系映射) 提供对 MyBatis 、Hibernate 等主流 ORM 框架的集成支持。 |
Spring Context | (应用上下文) 提供国际化、事件传播、JNDI 等企业级服务,是框架功能的延伸。 |
Spring Web MVC | (Web 框架) Spring 自带的、成熟的 MVC 框架,用于开发传统的 Servlet Web 应用。 |
Spring Webflux | (响应式 Web) 完全异步、非阻塞的 响应式 Web 框架,适用于高并发场景。 |
Spring Web | (集成支持) 用于集成 Struts 等早期的第三方 Web 框架。 |
在现代开发中,我们主要使用 Spring Web MVC
或 Spring 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。在开始学习前,请务必确保您的开发环境符合要求。