目录

spring-framework 的源码目录

Spring FrameWork 结构图

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

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

核心容器

AOP和Instrumentation

消息

数据访问/集成

Web

测试


spring-framework 的源码目录

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

Spring FrameWork 结构图

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

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

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)模块建立在由CoreBeans模块提供的坚实的基础上:它提供一个框架
式的对象访问方式,类似于一个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容器中以名
称检索对象。 它还支持列表投影和选择以及常见的列表聚合。

AOP和Instrumentation

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-web,spring-webmvc和spring-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)对象。

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

  1. Spring Data Neo4j解除两个节点之间的关系

    问题 需要解除两个Node之间的某种关系 思路 利用@Query注解,在其中运行Cypher的解除两个Node之间关系语句即可. Repository @Query("MATCH (:MyN ...

  2. spring事务隔离级别与数据库事务隔离级别的关系

    一直没搞清楚spring事务与数据库事务与锁之间的关系. spring事务: spring事务本质上使用数据库事务,而数据库事务本质上使用数据库锁,所以spring事务本质上使用数据库锁,开启spri ...

  3. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  4. 【Spring】模块

    [Spring]模块 文章目录 [Spring]模块 一.系统架构 1.Core Container 2.AOP/Aspects/Instrument 3.Data Access/Integerati ...

  5. 什么是spring?spring组成模块、spring优缺点、应用场景、bean的生命周期、线程并发问题

    什么是spring 在不同的语境中,Spring 所代表的含义是不同的.下面我们就分别从"广义"和"狭义"两个角度,对 Spring 进行介绍. 广义的 Spr ...

  6. Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别

    即使同时使用@ContextConfiguration和@SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner来指定如何加载Spring应 ...

  7. osgi和spring区别_OSGI和Spring动态模块–简单的Hello World

    osgi和spring区别 在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序. Spring动态模块(Spring Dm)使基于OSG ...

  8. OSGI和Spring动态模块–简单的Hello World

    在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序. Spring动态模块(Spring Dm)使基于OSGi的应用程序的开发更加容易. ...

  9. 关于gcc、glibc和binutils模块之间的关系

    一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是"预处理"和" ...

最新文章

  1. (转)iOS 各种控件默认高度(图示)
  2. 【学习笔记】《数据挖掘:理论与算法》CH5 支持向量机
  3. 聊聊 Java 的几把 JVM 级锁
  4. 电脑无法检查计算机更新,赶紧检测下!新买的电脑不能升级Win 11?问题终于找到了...
  5. C#中的套接字编程(一) --转
  6. woff字体MIME类型配置
  7. 《nftables相比iptables到底改变了什么》-- (作者:blog.csdn.net/dog250)
  8. Nginx的configure各项中文说明
  9. IntelliJ IDEA多项目共用一个Tomcat
  10. javaweb图书管理系统源码
  11. CCNA学习指南第六章
  12. in use 大学英语4word_(完整word版)全新版大学英语第四册综合教程课后翻译答案及课文译文...
  13. poco mysql 安装_linux 下 POCO 安装
  14. 苹果cms模板_苹果cmsv10高端模板有哪些?
  15. 2017滴滴校招 数字和为sum的方法数(DP)
  16. 触发器实例精讲-志在必得
  17. 基于Patachmatch的stereo matching笔记(三):《PatchmatchNet》
  18. HTML的id选择器类选择器
  19. nodejs中解决发出响应数据正常但是浏览器没有正确显示的问题
  20. Spring-第一篇-快速入门

热门文章

  1. 拼接sql语句参数绑定
  2. 使用Intellij Idea自定义MVC框架
  3. java+opencv+intellij idea实现人脸识别
  4. 加上mvc:resources后controller访问404
  5. 张珺 2015/07/13 个人文档
  6. Log4j 配置的webAppRootKey参数问题
  7. SyntaxError: unexpected EOF while parsing成功解决
  8. mac80211概览
  9. 深度学习自学(三十六):有效提升图像分类噪声鲁棒性的小波卷积网络
  10. php写入mysql表格失败,麻烦给我看一下为什么MySQL创建表格失败嘛