目录

一、Spring 为什么要设计成“模块化”?

二、Spring 模块整体结构概览

三、核心容器模块(Spring 的基础)

1. Spring Core

2. Spring Context

四、AOP 与切面相关模块

1. Spring AOP

2. Spring Aspects

五、数据访问相关模块

1. Spring JDBC

2. Spring ORM

3. Spring JMS

六、Web 相关模块

1. Spring Web

2. Spring Web MVC

七、测试模块

1. Spring Test

八、Spring 模块化设计的意义

九、总结


在学习 Spring 的过程中,很多人会直接从 IoC、AOP、Spring Boot 入手,却忽略了一个基础问题:Spring 本身到底是由哪些模块组成的?

当项目引入一个 spring-boot-starter 时,背后实际上是一整套 模块化的 Spring 生态
理解这些模块的职责边界,有助于我们更好地理解 Spring 的设计思想,也能在排查问题时更有方向感。

一、Spring 为什么要设计成“模块化”?

Spring 从诞生之初就遵循一个非常重要的原则:按需使用,而不是一揽子引入。

模块化设计带来了几个直接好处:

  • 功能解耦,职责清晰
  • 可独立演进,便于维护
  • 降低学习和使用成本
  • 支持不同技术栈的组合使用

Spring 并不是一个“大而全的框架”,而是一个“可自由组合的平台”。

二、Spring 模块整体结构概览

从功能层面来看,Spring 模块可以大致分为以下几类:

核心容器模块
-- Spring Core
-- Spring Context
 

AOP 与切面模块
-- Spring AOP
-- Spring Aspects
 

数据访问模块
-- Spring JDBC
-- Spring ORM
-- Spring JMS
 

Web 模块
-- Spring Web
-- Spring Web MVC
 

测试模块
-- Spring Test

下面分别介绍这些模块的核心职责。

三、核心容器模块(Spring 的基础)

1. Spring Core

Spring Core 是整个 Spring 框架的基础。

它主要提供:

  • IoC 容器的核心实现
  • Bean 的创建与管理
  • 依赖注入(DI)

几乎所有 Spring 模块都直接或间接依赖 Spring Core。

如果说 Spring 是一栋大楼,Spring Core 就是它的地基。

2. Spring Context

Spring Context 构建在 Core 之上,为应用提供“上下文能力”。

主要功能包括:

  • ApplicationContext 接口
  • 国际化(i18n)
  • 事件发布与监听机制
  • 资源加载(Resource)

Context 让 IoC 容器从“能用”变成“好用”。

四、AOP 与切面相关模块

1. Spring AOP

Spring AOP 提供了面向切面编程的核心实现。

主要用于:

  • 声明式事务
  • 日志、权限、监控等横切逻辑
  • 方法级别的功能增强

Spring AOP 基于代理机制实现,是 Spring 中非常核心的一部分。

2. Spring Aspects

Spring Aspects 用于支持与 AspectJ 的集成。

  • 提供对 AspectJ 注解的支持
  • 适用于更复杂、更精细的切面需求

在大多数业务系统中,Spring AOP 已经足够使用,Aspects 属于增强能力。

五、数据访问相关模块

1. Spring JDBC

Spring JDBC 对原生 JDBC 进行了高度封装。

它解决的问题包括:

  • 简化数据库连接和资源释放
  • 统一异常体系
  • 减少样板代码

是 Spring 数据访问体系中最基础、也最轻量的一层。

2. Spring ORM

Spring ORM 用于整合主流 ORM 框架。

支持:

  • Hibernate
  • JPA
  • MyBatis(通过整合)

主要作用:

  • 统一事务管理
  • 简化 ORM 框架的使用方式

3. Spring JMS

Spring JMS 提供了对 Java 消息服务(JMS)的支持。

适用于:

  • 消息队列
  • 异步处理
  • 解耦系统模块

在传统企业级系统中使用较多。

六、Web 相关模块

1. Spring Web

Spring Web 是 Spring Web 技术栈的基础模块。

提供:

  • Web 应用上下文
  • 与 Servlet API 的集成
  • Web 基础设施支持

是 Spring MVC 的底层依赖。

2. Spring Web MVC

Spring MVC 是 Spring 在 Web 层的核心实现。

主要职责:

  • 请求分发(DispatcherServlet)
  • 参数绑定
  • 视图解析
  • RESTful 接口支持

这是大多数 Java Web 项目中最常用的 Spring 模块之一

七、测试模块

1. Spring Test

Spring Test 为测试提供了良好的基础设施支持。

包括:

  • JUnit / TestNG 集成
  • Spring 容器环境模拟
  • Web 层测试支持

降低了 Spring 应用的测试成本。

八、Spring 模块化设计的意义

通过模块化设计,Spring 做到了:

  • 核心能力稳定(Core / Context)
  • 功能模块可插拔
  • 与第三方技术栈深度集成
  • 支撑 Spring Boot、Spring Cloud 等上层生态

九、总结

很多时候,我们是通过 Spring Boot Starter 在使用 Spring,而忽略了它背后清晰、严谨的模块划分。

理解 Spring 的模块结构,有助于我们:

  • 构建正确的整体认知
  • 快速定位问题所在模块
  • 更深入理解 Spring 的设计思想

Spring 并不是一个框架,而是一组围绕 IoC 容器构建的模块化解决方案。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐