Spring各模块的功能及互相之间的关系
目录
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)模块建立在由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容器中以名称检索对象。 它还支持列表投影和选择以及常见的列表聚合。
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各模块的功能及互相之间的关系相关推荐
- Spring Data Neo4j解除两个节点之间的关系
问题 需要解除两个Node之间的某种关系 思路 利用@Query注解,在其中运行Cypher的解除两个Node之间关系语句即可. Repository @Query("MATCH (:MyN ...
- spring事务隔离级别与数据库事务隔离级别的关系
一直没搞清楚spring事务与数据库事务与锁之间的关系. spring事务: spring事务本质上使用数据库事务,而数据库事务本质上使用数据库锁,所以spring事务本质上使用数据库锁,开启spri ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...
- 【Spring】模块
[Spring]模块 文章目录 [Spring]模块 一.系统架构 1.Core Container 2.AOP/Aspects/Instrument 3.Data Access/Integerati ...
- 什么是spring?spring组成模块、spring优缺点、应用场景、bean的生命周期、线程并发问题
什么是spring 在不同的语境中,Spring 所代表的含义是不同的.下面我们就分别从"广义"和"狭义"两个角度,对 Spring 进行介绍. 广义的 Spr ...
- Spring Boot集成测试中@ContextConfiguration和@SpringApplicationConfiguration之间的区别
即使同时使用@ContextConfiguration和@SpringApplicationConfiguration批注以及SpringJUnit4ClassRunner来指定如何加载Spring应 ...
- osgi和spring区别_OSGI和Spring动态模块–简单的Hello World
osgi和spring区别 在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序. Spring动态模块(Spring Dm)使基于OSG ...
- OSGI和Spring动态模块–简单的Hello World
在此姿势中,我们将采用使用OSGi进行的第一个实现,并使用Spring Dynamic Modules改进应用程序. Spring动态模块(Spring Dm)使基于OSGi的应用程序的开发更加容易. ...
- 关于gcc、glibc和binutils模块之间的关系
一.关于gcc.glibc和binutils模块之间的关系 1.gcc(gnu collect compiler)是一组编译工具的总称.它主要完成的工作任务是"预处理"和" ...
最新文章
- (转)iOS 各种控件默认高度(图示)
- 【学习笔记】《数据挖掘:理论与算法》CH5 支持向量机
- 聊聊 Java 的几把 JVM 级锁
- 电脑无法检查计算机更新,赶紧检测下!新买的电脑不能升级Win 11?问题终于找到了...
- C#中的套接字编程(一) --转
- woff字体MIME类型配置
- 《nftables相比iptables到底改变了什么》-- (作者:blog.csdn.net/dog250)
- Nginx的configure各项中文说明
- IntelliJ IDEA多项目共用一个Tomcat
- javaweb图书管理系统源码
- CCNA学习指南第六章
- in use 大学英语4word_(完整word版)全新版大学英语第四册综合教程课后翻译答案及课文译文...
- poco mysql 安装_linux 下 POCO 安装
- 苹果cms模板_苹果cmsv10高端模板有哪些?
- 2017滴滴校招 数字和为sum的方法数(DP)
- 触发器实例精讲-志在必得
- 基于Patachmatch的stereo matching笔记(三):《PatchmatchNet》
- HTML的id选择器类选择器
- nodejs中解决发出响应数据正常但是浏览器没有正确显示的问题
- Spring-第一篇-快速入门
热门文章
- 拼接sql语句参数绑定
- 使用Intellij Idea自定义MVC框架
- java+opencv+intellij idea实现人脸识别
- 加上mvc:resources后controller访问404
- 张珺 2015/07/13 个人文档
- Log4j 配置的webAppRootKey参数问题
- SyntaxError: unexpected EOF while parsing成功解决
- mac80211概览
- 深度学习自学(三十六):有效提升图像分类噪声鲁棒性的小波卷积网络
- php写入mysql表格失败,麻烦给我看一下为什么MySQL创建表格失败嘛