1. Spring框架是什么
Spring是一个基础的框架,它出现的最大目的是简化Java EE的开发。在Spring的基础上,还有SpringBoot和SpringCloud等一系列具体的技术框架,这些框架都是以Spring框架为基石进行扩展开发,共同组成了Spring生态。
2. Spring框架的特性
Spring有很多特性,其中最核心的是IOC和AOP。同时,在 IOC 和 AOP 的基础上可以整合各种开源框架和优秀的第三方类库,实现一站式开发。下面是对IOC和AOP概念的介绍。
- IOC是控制反转。Spring为我们提供了一个Bean的容器,方便装载具体的Bean对象,我们之前使用对象的时候,需要自己去new,而使用Spring的时候只需要告诉容器需要哪些对象,它就会帮我们创建好,并且维护对象的生命周期。
- AOP是面向切面编程。指的是把那些和业务无关的非核心代码抽离(横向切割)出来,形成一个可复用的模块,这个模块就被定义为切面。这样的话我们写代码的时候就可以去重点关注核心逻辑的实现,如果需要扩展的时候,就通过AOP里面的通知,向具体方法的前置、后置、环绕等不同环节添加非核心代码,从而实现具体的功能。AOP通常用来配合自定义注解实现日志采集、权限校验和事务管理等功能。
3. Spring框架的组成

上图包含了Spring的所有模块,下面针对不同分层下的模块进行介绍。
3.1 Core Container(Spring核心容器)
Spring核心容器是其它模块建立的基础,由 Beans 模块、Core 核心模块、Context 上下文模块和 Expression表达式语言模块组成。
- Beans 模块: 提供了框架的基础部分,包括控制反转和依赖注入。
- Core 核心模块: 封装了 Spring 框架的底层部分,包括资源访问、类型转换及一些常用工具类。
- Context 上下文模块: 建立在 Core 和 Beans 模块的基础之上,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。
- Expression 表达式模块: 提供表达式语言支持。
3.2 Data Access/Integration(数据访问/集成)
数据访问/集成模块层包括 JDBC、ORM、OXM、JMS 和 Transactions 模块。
- JDBC 模块: Spring对JDBC的封装,用于简化JDBC操作。
- ORM 模块: 用于实现数据库数据和Java对象的映射。
- OXM 模块: 用于实现XML文件和Java对象的映射。
- JMS 模块: Java 消息服务,提供一套消息生产者和消息消费者的模板,用于服务之间相互通信。
- Transactions 事务模块: 支持编程和声明式事务管理。
3.3 Web模块
Web 层包括 Web、Web MVC、WebSocket 和 Webflux 组件。
- Web 模块: 最基础的Web支持,例如文件上传功能、使用 Servlet 初始化 IOC 容器。
- Web MVC 模块: 基于Servlet API构建的原始Web框架,提供了基于注解的请求资源注入方式。
- WebSocket 模块: 用于与前端实现WebSocket全双工通信。
- Webflux 模块: Spring WebFlux 是 Spring Framework 5.x中引入的新的响应式Web框架。与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,用于创建基于事件循环执行模型的完全异步且非阻塞的应用程序。
3.4 AOP、Aspects、Instrument和Messaging模块
在核心容器之上还有AOP、Aspects等模块。
- AOP 模块: 提供面向切面编程的实现,这样就能够将通用功能抽离出来,实现与核心业务代码的解耦以及代码复用。
- Aspects 模块: 提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程框架。
- Instrument 模块: 提供了类加载器的实现。
- Messaging 模块: 为Spring集成了一些基础的报文传送服务。
3.5 Test模块
集成了JUnit测试框架,而且提供了一些基于 Spring 的测试功能,比如在测试 Web 框架时,模拟 Http 请求的功能。
参照:Spring6官方文档
1955

被折叠的 条评论
为什么被折叠?



