功能划分

spring-aop:面向切面编程

spring-aspects:Spring 对 aspect 的支持

spring-beans & spring-context:Spring IoC 实现,spring-beans 依赖查找、依赖注入,

spring-beans & spring-context:都需要 spring-core 支持,spring-context 事件驱动、注解驱动,模块驱动

spring-context-indexer:

spring-context-support:

spring-core:包含 Java 语法特性支持,Spring 基础 API(资源查找、泛型处理)

spring-expression:Spring 表达式,Spring 3 开始有,类似 JSP 里的 EL 语言

spring-instrument:Spring 2 对 Java 装配,对 Java agent 的支持

spring-jcl:Spring 5 开始,日志框架,统一 Spring 的日志管理,不再使用外部日志框架

spring-jdbc:Spring 对 JDBC 整合

spring-jms:对 Java Message Service 支持,使用大量的 JMS API 来实现

spring-messaging:统一消息服务的实现

spring-orm:对 Hibernate、JPA 等 ORM 框架的整合

spring-oxm:XML 编列,XML 中的序列和反序列化

spring-test:Spring 的测试(Mock 对象、TestContext、Spring MVC、WebClient 的测试)

spring-tx:transaction,Spring 的事务抽象(借鉴了 JDBC 中的一部分事务实现以及 Java EE 尤其是 EJB 的事务实现,做了统一封装)

spring-web:

spring-webflux:

spring-webmvc:

spring-websocket:

Spring 对 web 有四个实现的可能原因:想统一 web。

web 在 Java EE 中 web 有两种实现:传统的 Servlet API(底层 API 接口)实现和 JAX-RS(Java 标准的注解的方式驱动开发 REST 服务)。

由于 Spring 在上述两者的基础上进行借鉴,会发现 webflux 和 webmvc 的注解和 Java 注解像。

spring-websocket 在 websocket 的基础上做了封装,用来管理 Session 和消息