# Spring教程 - 15 Spring架构图

Spring教程告一段落了,下面再介绍一下 Spring 的架构图,总整体了解一下 Spring Framework 包含了哪些模块,以及各个模块提供的功能。

Spring 从架构上主要分为以下几个模块:

# 1 Core Container(核心容器)

Spring 最基础的部分,提供框架的核心功能:

模块 功能说明
Core 提供框架的基本功能,包括 IoC(控制反转)和依赖注入(DI)机制的支持。
Beans 管理 bean 的定义、创建、生命周期等核心机制。
Context 基于 BeanFactory,提供更高级的 ApplicationContext,用于国际化、事件传播、资源加载等。
SpEL Spring Expression Language:表达式语言,用于配置文件或代码中动态计算值(比如 @Value("#{bean.value * 2}"))。

# 2 AOP(面向切面编程)与 Aspect(切面)

用于实现横切关注点(如日志、事务等):

模块 功能说明
AOP 提供 AOP 的 API 和实现机制(基于代理),使你可以将日志、事务等功能从业务逻辑中剥离。
Aspect 支持通过注解(如 @Aspect)实现面向切面编程,主要基于 AspectJ。

# 3 Data Access / Integration(数据访问与集成)

负责数据访问和系统集成:

模块 功能说明
JDBC 封装原始 JDBC,简化数据库操作,提供 JdbcTemplate。
ORM 支持与 ORM 框架(如 Hibernate, JPA, MyBatis)集成。
Transactions 提供声明式和编程式事务管理。
JMS Java 消息服务集成,支持异步消息处理。
Spring Data 简化数据库访问,自动实现 Repository 接口,支持 JPA、MongoDB、Redis 等多种存储。

# 4 Web Layer(Web 层)

构建 Web 应用相关模块:

模块 功能说明
Servlet 最底层的支持,用于构建基于 Servlet 的应用。
Portlet 针对 Portal(门户)环境的支持(较旧,使用较少)。
Structs Spring 早期支持 Struts 1/2 的集成模块。现在很少用。
Spring MVC 基于 Servlet 的 Web 框架,支持 RESTful、表单等。
Spring WebFlux 响应式 Web 框架,基于 Reactor,用于构建异步非阻塞应用,适用于微服务。

# 5 Miscellaneous Layer(杂项/扩展层)

附加的功能模块,这个不算是 Spring Framework 中的,是属于 Spring 全家桶项目中的其他项目。

模块 功能说明
Spring Security 提供认证和授权机制,支持 OAuth2、JWT 等。
Spring Integration 提供与外部系统(文件、邮件、消息等)的集成,适合构建消息驱动架构。
Spring Batch 支持批处理任务,如大数据量导入导出等,具备容错、事务控制等特性。
Spring Cloud 提供构建分布式微服务架构的工具,如配置中心、服务注册与发现、断路器等。

# 6 Test(测试)

用于支持单元测试与集成测试:

模块 功能说明
Test 提供对 JUnit、TestNG 的集成,支持模拟环境、依赖注入测试、上下文管理等。

完结!