Spring各模块的功能及互相之间的关系

目录

spring-framework 的源码目录

Spring FrameWork 结构图

各个模块功能(该部分参考结构图来看)

模块概述(该部分参考源码目录来看)

核心容器

AOP和Instrumentation

消息

数据访问/集成

Web

测试


spring-framework 的源码目录

先摆一张导入的 spring-framework 的源码目录,可以看到其中的模块内容

Spring FrameWork 结构图

然后我们再放一张Spring FrameWork 结构图

spring overview

各个模块功能(该部分参考结构图来看)

Spring框架的功能大约由20个模块组成,这些模块按组可以分为:

Core Container(核心容器):

  • Beans:负责Bean工厂中Bean的装配,所谓Bean工厂即是创建对象的工厂,Bean的装配也就是对象的创建工作;
  • Core:这个模块即是负责IOC(控制反转)最基本的实现;
  • Context:Spring的IOC容器,因大量调用Spring Core中的函数,整合了Spring的大部分功能。Bean创建好对象后,由Context负责建立Bean与Bean之间的关系并维护。所以也可以把Context看成是Bean关系的集合;
  • SpEl (Expression):即Spring Expression Language(Spring表达式语言);

​​​​

Data Access/Integration(数据访问/集成):

  • JDBC:对JDBC的简单封装;
  • ORM:支持数据集成框架的封装(如Mybatis,Hibernate);
  • OXM:即Object XML Mapper,它的作用是在Java对象和XML文档之间来回转换;
  • JMS:生产者和消费者的消息功能的实现;
  • Transations:事务管理;

 

Web:

  • WebSocket:提供Socket通信,web端的的推送功能;
  • Servlet:Spring MVC框架的实现;
  • Web:包含web应用开发用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类,Struts集成类、文件上传的支持类、Filter类和大量辅助工具类;
  • Portlet:实现web模块功能的聚合(如网站首页(Port)下面可能会有不同的子窗口(Portlet));

 

AOP:

  • 面向切面;

 

Aspects:

  • 同样是面向切面的一个重要的组成部分,提供对AspectJ框架的整合;

 

Instrumentation(设备):

  • 相当于一个检测器,提供对JVM以及对Tomcat的检测;

 

Messaging(消息):

  • Spring提供的对消息处理的功能;

 

Test(测试):

  • 我们在做单元测试时,Spring会帮我们初始化一些测试过程当中需要用到的资源对象;

 


模块概述(该部分参考源码目录来看)

以下内容取自Spring Framework 5 中文文档 PDF,可以通过以下链接获取:

http://www.java1234.com/a/javabook/javabase/2020/1022/17981.html

核心容器

核心容器 由以下模块组成, spring-core spring-beans spring-context spring-
context-support ,和 spring-expression Spring 表达式语言)。
 
spring-core spring-beans 模块 提供了框架的基础功能 ,包括 IOC 和依赖注入功能。
BeanFactory 是一个成熟的工厂模式的实现。你不再需要编程去实现单例模式,允许你把依赖关系的
配置和描述从程序逻辑中解耦。
 
上下文 spring-context )模块建立在由 Core Beans 模块提供的坚实的基础上:它提供一个框架
式的对象访问方式,类似于一个 JNDI 注册表。上下文模块从 Beans 模块继承其功能,并添加支持国际化
(使用,例如,资源集合),事件传播,资源负载,并且透明创建上下文,例如, Servlet 容器。
Context 模块还支持 Java EE 的功能,如 EJB JMX 和基本的远程处理。 ApplicationContext 接口
Context 模块的焦点。 spring-context-support 支持整合普通第三方库到 Spring 应用程序上
下文,特别是用于高速缓存( ehcache JCache )和调度( CommonJ Quartz )的支持。
 
spring-expression 模块提供了强大的 表达式语言 去支持查询和操作运行时对象图。这是对 JSP 2.1
规范中规定的统一表达式语言( unified EL )的扩展。该语言支持设置和获取属性值,属性分配,方
法调用,访问数组,集合和索引器的内容,逻辑和算术运算,变量命名以及从 Spring IoC 容器中以名
称检索对象。 它还支持列表投影和选择以及常见的列表聚合。

AOPInstrumentation

spring-aop 模块提供了一个符合 AOP 联盟(要求)的面向方面的编程实现,例如,允许您定义方法拦
截器和切入点( pointcuts ),以便干净地解耦应该被分离的功能实现。 使用源级元数据 (source-
level metadata) 功能,您还可以以类似于 .NET 属性的方式将行为信息合并到代码中。
 
单独的 spring-aspects 模块,提供了与 AspectJ 的集成。
 
spring-instrument 模块提供了 类植入(instrumentation)支持和类加载器的实现 , 可以应用在特
定的应用服务器中。该 spring-instrument-tomcat 模块包含了支持 Tomcat的植入代理

消息

Spring 框架 4包括 spring-messaging ( 消息传递模块 ) ,其中包含来自 Spring Integration 的项
目,例如, Message MessageChannel MessageHandler ,和其他用来传输消息的基础应用。该
模块还包括一组用于将消息映射到方法的注释 (annotations) ,类似于基于 Spring MVC 注释的编程
模型。

不知道为啥这里写的spring4,mu,应该不会影响学习,模块功能是不会变的

 

数据访问/集成

数据访问 / 集成层由 JDBC ORM OXM JMS 和事务模块组成。
 
spring-jdbc 模块提供了一个 JDBC 抽象层,消除了需要的繁琐的 JDBC 编码和数据库厂商特有的错误代码解析。
 
spring-tx 模块支持用于实现特殊接口和所有 POJO (普通 Java 对象)的类的 编程和声明式事务 管理。
 
spring-orm 模块为流行的对象关系映射 ( object-relational mapping )API 提供集成层,包括
JPA Hibernate 。使用 spring-orm 模块,您可以将这些 O / R 映射框架与 Spring 提供的所有其他
功能结合使用,例如前面提到的简单声明性事务管理功能。
 
spring-oxm 模块提供了一个支持 对象 / XML 映射 实现的抽象层,如 JAXB Castor JiBX 和XStream。
 
spring-jms 模块 ( Java Messaging Service ) 包含用于生产和消费消息的功能。自 Spring Framework 4.1以来,它提供了与 spring-messaging 模块的集成。
 
 

Web

Web层由spring-webspring-webmvcspring-websocket 模块组成。

spring-web 模块提供基本的面向 Web 的集成功能,例如多部分文件上传功能,以及初始化一个使用了
Servlet 侦听器和面向 Web 的应用程序上下文的 IoC 容器。它还包含一个 HTTP 客户端和 Spring 的远程
支持的 Web 相关部分。
 
spring-webmvc 模块(也称为 Web-Servlet 模块)包含用于 Web 应用程序的 Spring 的模型 - 视图 -
制器 ( MVC ) REST Web Services 实现。 Spring MVC 框架提供了领域模型代码和 Web 表单之间的
清晰分离,并与 Spring Framework 的所有其他功能集成。

测试

spring-test 模块支持使用 JUnit TestNG Spring 组件进行 单元测试 集成测试 。它提供了
Spring ApplicationContexts 的一致 加载 和这些上下文的 缓存 。它还提供可用于独立测试代码的
模仿 (mock) 对象
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值