从上到下:
Data Access/Integration(数据访问与集成)
部分包含5个模块
- jdbc:jdbc的支持
- orm:对象关系映射,集成orm框架
- oxm:对象xml映射
- jms:java消息服务
- spring-tx:事务控制
JDBC:是Spring对JDBC数据访问的封装,提供了一个JDBC抽象层,消除了冗长的JDBC代码。
ORM:提供对对象关系映射框架的支持。
OXM:提供了对Object/XML映射实现的抽象层。
O/X映射器这个概念并不新鲜,O代表Object,X代表XML。它的目的是在Java对象(几乎总是一个plainoldJavaobject,或简写为POJO)和XML文档之间来回转换。
https://www.jb51.net/article/131713.htm
JMS:Java消息服务。
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持(百度百科给出的概述)。我们可以简单的理解:两个应用程序之间需要进行通信,我们使用一个JMS服务,进行中间的转发,通过JMS 的使用,我们可以解除两个程序之间的耦合。
Transaction:支持编程和声明性事务管理。
https://blog.csdn.net/qq_29651203/article/details/78517082
- 事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)
- 一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成
- 事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同
Web
-
spring-web:基础web功能,如文件上传
-
spring-webmvc:mvc实现
-
spring-webmvc-portlet:基于portlet的mvc实现
-
spring-websocket:为web应用提供的高效通信工具
Web:提供了基础的web功能。如文件上传、使用servlet listeners初始化IoC容器等
Servlet:即SpringMVC 框架,它是一个全功能的构建 Web 应用程序的 MVC 实现,对Servlet进行了封装。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Portlet:提供了基于Porlet的MVC实现。
WebSocket:提供了一个在Web应用中高效、双向的通信工具。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
Portlet是基于Java的Web组件,由Portlet容器管理,并由容器处理请求,生产动态内容。Portals使用Portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用Servlets进行Web应用编程的下一步,Portlets实现了Web应用的模块化和用户中心化。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。
HTML5 定义的 WebSocket 协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
aop
aop部分包含5个模块
-
spring-aop:面向切面编程
-
spring-aspects:集成AspectJ
-
spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器
-
spring-instrument-tomcat:针对tomcat的instrument实现
-
spring-messaging:用于构建基于消息的应用程序
AOP:提供了面向切面编程的实现,让你可以定义方法拦截器和切点,从而将逻辑代码分开,降低代码间的耦合性。
Aspects:提供了对AspectJ的集成支持,这是一个功能强大且成熟的面向方面编程(AOP)框架。
messaging:为集成messaging api和消息协议提供支持
Instrumentation:提供了在特定的应用服务器中使用类工具的支持和类加载器实现。
使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义。有了这样的功能,开发者就可以实现更为灵活的运行时虚拟机监控和 Java 类操作了,这样的特性实际上提供了一种虚拟机级别支持的 AOP 实现方式,使得开发者无需对 JDK 做任何升级和改动,就可以实现某些 AOP 的功能了。
core
core部分包含4个模块
-
spring-core:依赖注入IoC与DI的最基本实现
-
spring-beans:Bean工厂与bean的装配
-
spring-context:spring的context上下文即IoC容器
-
spring-expression:spring表达式语言
Core:
包含了Spring框架基本的核心工具类,Core模块是其他组件的基本核心。
Beans:
是所有应用都要用到的模块,它包含访问配置文件、创建和管理bean、进行IoC和DI相关操作的所有类。其最主要的组件BeanFactory,它的提供了对工厂模式的经典实现来消除对程序性单例模式的需要,并真正允许你从程序逻辑中分离出依赖关系和配置。
Context:
构建于Core和Beans模块基础之上,扩展了BeanFactory的功能,为Spring提供了大量扩展,如对i18n国际化、Bean生命周期控制、框架事件体系、资源加载、事件传播的支持;该模块还提供了许多企业级服务的支持,例如邮件、任务调度、JNDI获取、EJB集成、远程访问等。ApplicationContext接口是Context模块的关键。
SpEL:
提供了一个强大的表达式语言用于在运行时查询和操纵对象。
- Test
支持使用JUnit和TestNG对Spring组件进行测试。
test部分只有一个模块,我将spring-context-support也放在这吧
-
spring-test:spring测试,提供junit与mock测试功能
-
spring-context-support:spring额外支持包,比如邮件服务、视图解析等