Spring 是什么:模块组成与版本/Jakarta 变化

结论先行:Spring 是以 IoC(控制反转)容器为核心的 Java 企业级开发框架,核心理念是"IoC/DI 解耦对象 + AOP 抽取横切逻辑",推荐编程模型是 JavaConfig + 注解。版本上要抓住两条主线:Spring Framework 5.x 用 javax.* 命名空间;6.0 起全面迁到 jakarta.*(Java 17 基线);当前主线是 Spring Framework 7.0(2025-11 GA,与 Spring Boot 4.0 配套,最低 Java 17、官方推荐 Java 21)。

一、Spring 是什么

  • 定位:轻量级、开源的"一站式"应用框架,把对象管理、事务、Web、数据访问等通用能力抽象成统一模型;
  • 不只是一个 IoC 框架:围绕核心容器发展出 AOP、事务抽象、MVC/WebFlux、Security、Data、Cloud 等完整生态;
  • 与 Spring Boot 的关系:Boot 基于 Framework 提供"约定优于配置 + 自动装配",让框架开箱即用,但底层 IoC/AOP/事务语义仍是 Framework 的,Boot 只是"加速器"。

二、模块组成

模块组核心模块职责
Core Containerspring-core / spring-beans / spring-context / spring-expressionIoC 容器、Bean 定义与依赖注入、SpEL 表达式
AOPspring-aop / spring-aspects面向切面编程,声明式事务的地基
数据访问/集成spring-jdbc / spring-tx / spring-orm / spring-jms事务抽象、JDBC/ORM 整合
Webspring-web / spring-webmvc / spring-webflux / spring-websocket传统 Servlet MVC 与响应式 Web
测试spring-test集成测试、Mock、事务性测试支持

三、版本与 Jakarta 命名空间变化

  • Spring Framework 5.3.x:javax.* 命名空间,Java 8+,javax 时代的最后稳定线;
  • Spring Framework 6.0(2022-11):Java 17 + Jakarta EE 9 基线,javax.* 全部迁移为 jakarta.*(javax.servlet→jakarta.servlet、javax.validation→jakarta.validation、javax.annotation→jakarta.annotation 等);
  • Spring Framework 6.1 / 6.2:6.x 演进线,持续功能增强与安全维护;
  • Spring Framework 7.0(2025-11 GA):当前主线,对应 Spring Boot 4.0,最低 Java 17、官方推荐 Java 21;
  • 速记映射:Spring Boot 3.x ↔ Framework 6.x;Spring Boot 4.x ↔ Framework 7.x。
// Framework 6+ / 7+ 的代码必须使用 jakarta 命名空间
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;

常见追问 / 记忆点

  • 追问 1:Spring 与 Spring Boot 什么关系?答:Boot 是 Framework 之上的快速开发框架,自动配置只是装配策略,不改变 IoC/AOP/事务内核。
  • 追问 2:5.x 升 6.x 最大的改动?答:Java 基线升到 17,javax.* 整体换 jakarta.*,依赖库需同步升级。
  • 记忆点:版本线记三个数——5(javax)、6(jakarta + Java 17)、7(2025 + Boot 4 + 推荐 Java 21)。
笔记加载中…