Spring的这七大模块你了解吗

简介: Spring的这七大模块你了解吗本文会和大家分享以下几点👇spring 七大模块模块的主要作用模块间的依赖关系spring经典面试题——什么是 SpringSpring的七大模块那么先来看看这个图回忆下 Spring 有哪些模块吧

网络异常,图片无法展示
|




也借此机会好好复习,整理下这个 Spring ,虽然经常用,但是还没好好研究过它……

本文会和大家分享以下几点👇


  1. spring 七大模块


  1. 模块的主要作用


  1. 模块间的依赖关系


  1. spring经典面试题——什么是 Spring


Spring的七大模块


那么先来看看这个图回忆下 Spring 有哪些模块吧


网络异常,图片无法展示
|


可以分成下面这七大模块👇


  • 数据模块(Data Access / Integration


  • Web模块


  • 切面模块(AopAspects


  • 工具模块(Instrumentation)


  • 消息模块


  • 核心模块


  • 测试模块


小结


网络异常,图片无法展示
|


后面文章重点会放在颜色深的模块~ 😄


数据模块


数据访问与集成模块 , Data Access/Integration


在这个模块中,有五个小模块,分别是👇


  • JDBC (Java Database Connectivity),Java数据库连接


  • ORM (Object Relational Mapping), 对象关系映射


  • OXM (Object XML Mapping), 对象XML映射


  • JMS (Java Message Service),Java消息服务


  • Transactions事务


看了一眼下来,发现最常用的应该就是这个 ORMTransactions ,而这个 JMSJDBC 差不多,都提供了相应的模板,也是很少用到了,最后这个 OXM 都没点印象的😂


小结


星号的是重点模块~🐷


网络异常,图片无法展示
|


Web模块


这里有四个模块👇


  • Web


  • WebMVC


  • WebSocket


  • WebFlux


Web 模块提供了核心部分,如 编解码,过滤器,序列化,国际化,跨域,转换器,客户端和服务端等等


WebMVC 模块 即我们平时用的 SpringMVC


WebSocket 模块 用来支持这个 全双工通信


WebFlux模块 就是这个响应式Web编程模块 ,可以参考下图👇


网络异常,图片无法展示
|


小结


网络异常,图片无法展示
|


切面模块


这里有大名鼎鼎的 AOPAspects


Aop : Aspect Oriented Programming , 面向切面编程 ,是对 OOP 的补充

Aspects : 切面


不知道小伙伴们看到这里有没有犯迷糊~, 这里居然是两个模块,我一直以为只有 AOP 这个模块🐖


简单说明下这两个模块的不同👇


Spring AOP 是一个基于代理的 Aop 框架 ,日常使用比较多的


Spring Aspects 模块里面则定义了五种类型的切面,如下👇


网络异常,图片无法展示
|


关于代理可以看看 4ye 之前写的这两篇文章~




小结


网络异常,图片无法展示
|


工具模块


Instrumentation , 这个是 Java 的一个接口,可以用来做


  • 监控代理


  • 事件日志记录


  • 代码覆盖率


Examples of such benign tools include monitoring agents, profilers, coverage analyzers, and event loggers. —— 来自该接口的注释


还没用过呢🐖


这个 AspectJLTW(load-time-weaver) 就是通过该方式来进行切面织入


消息模块


Spring-messaging 模块提供了一种基于 WebSocketSTOMP 协议实现

STOMP (Simple Text Oriented Messaging Protocol) 是一种 流文本定向消息协议,也是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议

常见的这几个MQ都支持该协议,比如 RocketMQRabbitMQActiveMQ


我们可以通过 Spring 官网的例子上手这个模块,大概如下👇


简单版


启用简单内置消息代理时使用的组件


网络异常,图片无法展示
|


进阶版


对接外部 MQ 来实现这个广播,订阅


网络异常,图片无法展示
|


核心模块


来到 Spring 最核心的部分,这里有我们熟悉的 控制反转 (Inversion of Control, IOC ) 和依赖注入( Dependency Injection, DI)


这里有四个核心模块👇


  • Beans


  • Core


  • Context


  • Expression


每一个模块都很重要,这里先列几个大家熟悉的 Bean


比如:


  • BeanFactoryBeans 模块中,IOC 容器的根接口


  • StopWatchCore 模块中,它是 Spring 中的一个计时器,在启动 Spring 项目时经常看到


  • ApplicationContextContext 模块中 ,核心接口


  • ParserContext 就在 Expression 模块中,里面定了这个 EL表达式 的默认前缀 #{ , 后缀 }


小结


大概有这么些内容

网络异常,图片无法展示
|


测试模块


这里有 MockJunit 等,就不多介绍先🐷


源码依赖图


根据 Spring 源码模块中的 gradle 依赖,可以整理出这么一张依赖关系图👇


网络异常,图片无法展示
|


什么是Spring?


这里分享下 4ye 滴思路🐖


Spring 是一个轻量级框架,有七大模块,分别为 数据,Web,切面,工具,消息,核心,测试


总共 20 几个小模块


  • 核心模块有 Beans,Core,Context,ExpressionIOC 和 DI⭐


  • 切面模块主要有 AOP ,涉及到这个 AOP 编程 ⭐


  • Web模块有 Web,WebMVC, WebSocket, WebFlux


  • 数据模块主要有 ORM ,TX


方便扩展,比如 邮件,缓存,定时任务等模块

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
XML Java 数据格式
深度挖掘Spring IoC核心模块源码的宝藏
深度挖掘Spring IoC核心模块源码的宝藏
70 1
|
Java Spring
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
spring框架之AOP模块(面向切面),附带通知类型---超详细介绍
120 0
|
XML Java 数据格式
深入探究Spring核心模块
深入探究Spring核心模块
50 0
|
4月前
|
消息中间件 负载均衡 Java
最容易学会的springboot gralde spring cloud 多模块微服务项目
最容易学会的springboot gralde spring cloud 多模块微服务项目
|
5月前
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
4月前
|
IDE Java Spring
Spring Boot中的多模块项目构建
Spring Boot中的多模块项目构建
|
5月前
|
IDE Java Spring
Spring Boot中的多模块项目构建
Spring Boot中的多模块项目构建
|
6月前
|
Java Spring
如何创建spring 的web模块
如何创建spring 的web模块
28 6
|
6月前
|
缓存 Java Spring
单体项目中资源管理模块集成Spring Cache
该内容是关于将Spring Cache集成到资源管理模块以实现缓存同步的说明。主要策略包括:查询时添加到缓存,增删改时删除相关缓存。示例代码展示了@Service类中使用@Transactional和@Cacheable注解进行缓存操作,以及在RedisTemplate中处理缓存的示例。
46 5
|
6月前
|
前端开发 Java Spring
Spring Framework五大功能模块
Spring Framework五大功能模块