Spring模块组成(框架组成、整体架构、体系架构、体系结构)-程序员宅基地

技术标签: Spring整体架构  Spring模块组成  Spring体系架构  Spring各模块(jar包)依赖关系  Spring  Spring体系结构  

Spring是一个轻量级Java开发框架,致力于简化Java开发。更多有关Spring框架的简介、设计理念、优缺点和应用场景请参考这篇文章

Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container)AOP(Aspect Oriented Programming)和设备支持(Instrmentation)数据访问与集成(Data Access/Integeration)Web消息(Messaging)Test等 6 个模块中。 以下是 Spring 5 的模块结构图:

在这里插入图片描述

组成 Spring 框架的每个模块集合或者模块都可以单独存在, 也可以一个或多个模块联合实现。 每个模
块的组成和功能如下:

核心容器

Spring的核心容器是其他模块建立的基础,有spring-core、spring-beans、spring-context、spring-context-support和spring-expression(Spring表达式语言)等模块组成。

spring-core 模块:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)功能。

spring-beans 模块:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。

spring-context 模块:建立在Core和Beans模块的基础之上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。

spring-context-support 模块:支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存(EhCache、JCache)和任务调度(CommonJ、Quartz)的支持。

Spring-expression 模块:提供了强大的表达式语言去支持运行时查询和操作对象图。这是对JSP2.1规范中规定的统一表达式语言(Unified EL)的扩展。该语言支持设置和获取属性值、属性分配、方法调用、访问数组、集合和索引器的内容、逻辑和算术运算、变量命名以及从Spring的IOC容器中以名称检索对象。它还支持列表投影、选择以及常用的列表聚合。

AOP 和设备支持

由spring-aop、 spring-aspects 和 spring-instrument等 3 个模块组成。

spring-aop 模块:是 Spring 的另一个核心模块,提供了一个符合 AOP 要求的面向切面的编程实现。 作为继 OOP(面向对象编程) 后, 对程序员影响最大的编程思想之一, AOP 极大地开拓了人们对于编程的思路。 在 Spring 中, 以动态代理技术为基础,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。

spring-aspects 模块:提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。

spring-instrument 模块:是 AOP 的一个支援模块, 提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。主要作用是在 JVM 启用时, 生成一个代理类, 程序员通过代理类在运行时修改类的字节, 从而改变一个类的功能, 实现 AOP 的功能。

数据访问与集成

由 spring-jdbc、spring-orm、spring-oxm、spring-jms 和 spring-tx 等 5 个模块组成。

spring-jdbc 模块:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。主要是提供 JDBC 模板方式、 关系数据库对象化方式、 SimpleJdbc 方式、 事务管理来简化 JDBC 编程, 主要实现类是 JdbcTemplate、 SimpleJdbcTemplate 以及 NamedParameterJdbcTemplate。

spring-orm 模块:是 ORM 框架支持模块, 主要集成 Hibernate, Java Persistence API (JPA) 和Java Data Objects (JDO) 用于资源管理、 数据访问对象(DAO)的实现和事务策略。

spring-oxm 模块:主要提供一个抽象层以支撑 OXM(OXM 是 Object-to-XML-Mapping 的缩写, 它是一个 O/M-mapper, 将 java 对象映射成 XML 数据, 或者将 XML 数据映射成 java 对象) , 例如: JAXB,Castor,XMLBeans,JiBX 和 XStream 等。

spring-jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自Spring4.1以后,提供了与spring-messaging模块的集成。

spring-tx 模块:事务模块,支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。

Web

由spring-websocket、spring-webmvc、spring-web、portlet和spring-webflux模块等 5 个模块组成。

spring-websocket 模块:Spring4.0以后新增的模块,实现双工异步通讯协议,实现了WebSocket和SocketJS,提供Socket通信和web端的推送功能。

spring-webmvc 模块:也称为Web-Servlet模块,包含用于web应用程序的Spring MVC和REST Web Services实现。Spring MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。

spring-web 模块:提供了基本的Web开发集成功能,包括使用Servlet监听器初始化一个IOC容器以及Web应用上下文,自动载入WebApplicationContext特性的类,Struts集成类、文件上传的支持类、Filter类和大量辅助工具类。

portlet 模块:实现web模块功能的聚合,类似于Servlet模块的功能,提供了Portlet环境下的MVC实现。

spring-webflux 模块:是一个新的非堵塞函数式 Reactive Web 框架, 可以用来建立异步的, 非阻塞,事件驱动的服务, 并且扩展性非常好。

消息(Messaging)

即 spring-messaging 模块。

spring-messaging 是从 Spring4 开始新加入的一个模块, 该模块提供了对消息传递体系结构和协议的支持。

Test

即 spring-test 模块。

spring-test 模块主要为测试提供支持的,支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。

Spring各模块(jar包)之间的依赖关系

该图是 Spring5 的包结构, 可以从中清楚看出 Spring 各个模块(jar包)之间的依赖关系。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ThinkWon/article/details/102810819

智能推荐

Iperf 报错:read failed: No route to host_iperf no route to host-程序员宅基地

文章浏览阅读1.4w次,点赞2次,收藏8次。调试Cent OS 7.5的系统的IPerf,发现server端,无法打印出来的间隔接受率等信息,client也报错,报错显示如下[root@localhost ~]# iperf -u -c 192.168.108.61 -i1 -t9999999999 -b 3M -l 1200----------------------------------------------------------..._iperf no route to host

Linux负载命令_linux 负载-程序员宅基地

文章浏览阅读995次。Linux查看负载的命令_linux 负载

站长工具大全,站长工具哪个好用,站长在线工具-程序员宅基地

文章浏览阅读2.9w次。在每日的seo工作中,相信以上很多工具大家都会经常用到这些实用的SEO工具,坚持用这些工具为给我们的工作带来意想不到的效果,一定要坚持下去。我只能说,各有千秋,站长之家的权重计算比较低,所以大家一看有权重心理问题觉得站长之家好,爱站权重计算较高所以站长之家有权重在爱站却没有。站长和爱站主要是权重不太一样,爱站的低一些,不过无论是站长还是爱站都是自己的算法,等搜索引擎没有公布任何权重的算法。对于站长工具每个站长需求不一样,所以没有所谓的哪个好用,另个每个站长工具都有其特点,适合自己的才是最好的。...

机器人行业_2019年机器人及自动化系统所处行业阶段-程序员宅基地

文章浏览阅读2.9k次。第一部分全球 机器人行业发展趋势一、全球机器人行业重点企业股价趋势在研究机器人龙头企业股价过程中,我们发现这些企业的股价无论是在一个较长的时间内,还是在近几年,都呈现上涨的态势。从全球范围看,机器人行业仍处于上升期。随着机器人技术的进步,以及中国等发展中国家人口红利耗尽,自动化大趋势不可挡,也为机器人行业发展提供了先决条件。(1)近五年机器人四大龙头企业股价呈涨势随着全球经济从20_2019年机器人及自动化系统所处行业阶段

前端组件之Bootstrap与Ant design of Vue_bootstrap与antd-程序员宅基地

文章浏览阅读5.4k次,点赞4次,收藏6次。架构1、前言2、Bootstra跟Ant design对比2.1 简介2.1.1 Bootstrap2.1.2 Ant design2.2 特性2.2.1 Bootstrap2.2.2 Ant Design Of Vue2.3 入门条件BootstrapAnt Design Of Vue2.4 部分组件的显示效果以及代码2.4.1 导航条2.4.2 巨幕2.5 栅格系统3、两个强大组件库的一些共性总而言之1、前言本文仅面向前端初始学习者,当然也欢迎大犇来指正其中错误玩前端的新手,或多或少地会见过并_bootstrap与antd

发票批量查验软件(自动保存官网查验截图)91发票查验助手-程序员宅基地

文章浏览阅读3.7w次。发票批量查验软件(自动保存官网查验截图)91发票查验助手_91发票查验助手

随便推点

【UE4】 VS2019编译源码错误 error C4800_vs2019 memory(3382): error c4800: 从“_ty”到 bool 的隐式-程序员宅基地

文章浏览阅读1k次。参考文章https://blog.csdn.net/weixin_43030629/article/details/104947160._vs2019 memory(3382): error c4800: 从“_ty”到 bool 的隐式转换。信息可能丢失

ROS中开源激光slam(2D)[gmapping hector karto cartographer]_karto 定位-程序员宅基地

文章浏览阅读8.1k次,点赞5次,收藏43次。ROS中开源激光slam(2D)[gmapping hector karto cartographer]_karto 定位

在配置hibernate-程序员宅基地

文章浏览阅读1k次,点赞8次,收藏20次。资料过多,篇幅有限,需要文中全部资料可以点击这里免费获取前端面试资料PDF完整版!自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。整版!**自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。

java计算机毕业设计随心淘网管理系统源代码+数据库+系统+lw文档-程序员宅基地

文章浏览阅读203次。java计算机毕业设计随心淘网管理系统源代码+数据库+系统+lw文档。springboot基于B_S架构的疫情包联信息管理系统的设计与实现。springboot基于精细化考核的离散数学课程教学目标达成系统。springboot基于Springboot的大学宿舍管理系统。ssm临港新片区招商引资项目管理系统的设计与实现。_jsp__access_在线网络购物系统_ssm疫情背景下基于web的学生信息日报系统。JSP广告公司网站的设计与实现mysql。jsp基于javaweb的公益募捐网站。

Oracle19c安装及监听配置&PLSQL Developer安装-程序员宅基地

文章浏览阅读233次。首先,在“开始”菜单栏中找到Oracle-OraDB19Home1(因安装版本不同可能会有差异),接着打开Net Configuration Assistant,进行监听程序的配置;使用dos命令(windows徽标+R--输入cmd)/菜单栏搜索框直接输入cmd,输入lsnrctl status;监听程序配置完成后再通过cmd输入lsnrctl status命令,测试如下则说明监听程序已配置完成;Oracle主目录用户口令即在下载Oracle时自定义的口令密码;若如下图显示则是尚未开启监听程序;

Java中8种常见的数据结构_java数据结构-程序员宅基地

文章浏览阅读152次。数组、链表、堆、栈、队列、树、哈希、图。_java数据结构

推荐文章

热门文章

相关标签