1、Spring和Spring的组成
1.1、什么是Spring?
Spring是一个轻量级的控制反转和面向切面的的框架。
1.1.1、Spring的起源
Spring是Java EE开发的一个轻量级开源框架,由悉尼大学的音乐学博士Rod Johnson于2002 年提出,以interface21框架为基础,在2004年发布了Spring的第一个版本,Spring最大的目标是让Java EE的开发更容易,让现有的技术更加实用。
1.1.2、Spring的特点和优势
- 特点:
- 免费开源
- 控制反转
- 面向切面
- 非侵入式
- 依赖注入
- 组件化
- 容器
- 一站式
- 优势:
- 让Java EE的开发更容易
- 让现有的技术更加实用
- 便于进行单元测试
- 提供了良好的web MVC框架
- 对复杂API进行封装,比如JDBC,javaMail等
1.2、Spring有哪些组件?
1.2.1、Core Container(核心容器)
-
Beans 模块:提供框架的基础部分,比如控制反转和依赖注入。
-
Core 核心模块:封装 Spring 的底层
-
Context 上下文模块:建立在 Core 和 Beans 模块的基础之上,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。ApplicationContext 接口是上下文模块的焦点。
-
SpEL 模块:提供表达式支持
1.2.2、Data Access/Integration(数据访问/集成)
-
JDBC 模块:提供一个 JBDC 的模板
-
ORM 模块:提供与流行框架集成的 API
-
OXM 模块:提供Java对象和XML 映射的抽象层实现,将 Java 对象映射成 XML ,或者将XML 映射成 Java 对象
-
JMS 模块:提供消息服务
-
Transactions 事务模块:提供编程和声明式事务管理
1.2.3、Web模块
- Web 模块:提供了基本的 Web 开发功能
- Servlet 模块:提供了 Spring MVC 框架
- WebSocket 模块:提供了简单的接口,用户只要实现接口就可以快速的搭建 WebSocket Server,从而实现双向通讯
- Webflux 模块: Spring WebFlux 用于创建基于事件循环执行模型的完全异步非阻塞的应用程序
- Portlet 模块:提供了在 Portlet 环境中使用 MVC 实现,在Spring 5.x中已经移除
1.2.4、AOP、Aspects、Instrumentation和Messaging
-
AOP 模块:提供了面向切面编程实现,比如日志记录、权限控制、性能统计
-
Aspects 模块:提供了一个AOP框架
-
Instrumentation 模块:提供了类工具的支持和类加载器的实现
-
messaging 模块:提供了对消息传递体系结构和协议的支持
-
jcl 模块: Spring 5.x中新增的日志框架集成的模块
1.2.5、Test模块
- Test 模块:支持 Junit 和 TestNG 测试框架