Spring 模块结构全景解析:你用的 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 容器构建的模块化解决方案。
更多推荐




所有评论(0)