前言:
不知道Spring是做什么的小伙伴,可以看我之前的文章
Spring基础篇
这篇我主要记录一下Spring的总览图,工作繁忙之余,发现Spring真的是处处都有他的痕迹,所以决定这波将Spring做一个全面的解析记录。
介绍
Spring是2003年兴起的轻量级java开原框架,当然,这是相比较EJB而言。
实际上,发展到今年(2023年),已经过去了将近20年的时间,经过一代代开发者的迭代,Spring已经不能算是轻量级了,二十年的发展,里面不可避免的有了许多有价值的功能。
总览图如下:
有兴趣找图的小伙伴,可以访问以下的链接地址。
https://docs.spring.io/spring-framework/docs/4.3.0.RC1/spring-framework-reference/htmlsingle/
这张图实际上已经很清楚的描述了Spring的结构,下面,对这张图做一下简单的描述!
Core Container
它是Spring框架的基础,提供IoC(依赖注入),控制反转等核心功能,内部包含如下。
core
所有Spring框架的基本核心,其他工具类都需要用到这个核心。
beans
创建,管理bean,是IoC的核心。
context
继承了beans的特性,为Spring的核心提供了功能上的扩展,也就是core和beans的上一层。
spel
提供了表达式语言,可以在代码运行时,测试和调试对象。
在往上,就是Data Access/integration,这个是提供了数据访问和通信!
Data Access/integration
JDBC
提供了jdbc的抽象层,消除了冗余的代码,自动解析各个厂商的不同代码。
ORM
对象关系映射,提供了一个数据交互层,不同的框架对数据库的处理方式不一样,orm则是将这些操作方式封装起来,不管使用那种框架,都可以基于spring的几个简单注解来达到目的。如,事物的@Transcation注解。
OXM
提供了对象,xml的映射层,前后端不分时,经常使用这个进行交互。
JMS
消息服务,封装了一些对消息中间件的操作。
Transcations
声明式事物,不只是关系型数据库事物,还可以给非关系型数据库如MongoDB加事物。
Web模块
提供了对web项目的支持。
websocket
全双工通信,传统的http通信,都是客户端给服务端发送消息,服务端进行响应,但是在很多项目中,都需要服务端主动给客户端发送消息,javaEE从servlet3开始,就是支持websocket通信的,但是原生写法比较麻烦,所以Spring又推出了websocket工具,简化websocket开发!
Servlet
一般是指Spring Mvc.
porlet
提供了porlet环境,以及servlet模块的MVC实现。
Web
提供了一些基础特性,文件上传,监听器等。
Aop
本质上就是面向切面编程,我们知道,Spring中的事物就是基于aop做的。
Aspect
提供了aspect技术支持。
Instrumentation
提供了class Instrumentation,以及支持classloader实现,在特定的服务器上使用。
Test
测试模块,支持Junit,以及TestNG测试。