[转帖]Spring体系结构:七大核心模块详解

spring,体系结构,核心,模块,详解 · 浏览次数 : 0

小编点评

**Spring框架简介** Spring 是一个基于控制反转 IOC 和面向切面编程的轻量级开源框架。 **主要功能:** * **非侵入式设计:** Spring 以无侵入式的方式管理应用程序代码的依赖关系。 * **面向切面编程:** 支持面向切面编程,允许定义方法拦截器和切入点,将代码按照功能进行分离。 * **IOC控制反转:** 框架提供 IOC 机制,将对象的创建权交给 Spring 容器管理。 * **声明式事务处理:** 支持声明式事务处理,无需手动编程。 * **多种框架整合:** Spring 可以高度开放的与其他优秀框架无缝整合。 **架构结构:** Spring 框架包含多个模块,这些模块分布在以下模块中: * **核心容器(Core Container)**:提供框架的基本组成部分。 * **数据访问/集成(Data Access/Integration)**:负责数据库连接和操作。 * **Web层AOP(Aspect Oriented Programming)模块**:提供面向切面编程的支持。 * **消息传输(Messaging)** * **测试(Test)模块** * **Spring 上下文(ApplicationContext)**:提供应用程序配置的管理。 * **核心容器(Core Container)**:提供框架的基本功能。 * **bean(Bean)工厂:**提供工厂模式的实现。 * **AspectJ:**提供面向切面编程的实现。 **核心容器:** 核心容器是 Spring 框架的核心组件,它提供以下功能: * 控制反转(IOC) * 依赖注入(DI) * 提供 Bean 工厂来产生和管理 Bean **面向切面编程:** 面向切面编程是一种编程技术,允许定义方法拦截器和切入点,并将代码按照功能进行分离。 Spring 提供以下类来实现面向切面编程: * **方法拦截器:**允许在方法执行之前或之后执行代码。 * **切入点:**允许在方法执行之前或之后执行代码。 **其他模块:** 除了核心容器、数据访问、消息传输、测试和上下文等模块之外,Spring 还提供以下模块: * **Spring Web:**提供基础 Web 开发集成功能。 * **Spring MVC:**提供 MVC 框架的实现。 * **Spring Data:**提供多种数据访问框架的抽象层。

正文

https://www.toutiao.com/article/7088616970362487329/

 

 

spring是一个非常优秀的java框架,99%的公司都在使用,spring算是必备技能,所以一定要掌握好@mikechen

Spring简介

Spring是一个基于控制反转IOC和面向切面编程AOP的轻量级开源框架。

Spring它是由一个叫做Rod Johnson的音乐学博士在2002年提出并创建的,他提出了著名的轮子理论,就是:不要重复发明轮子。

Spring之所以叫做Spring,就是它期望给软件行业带来一个春天,让我们的开发变得更加简单更加快速。

Spring致力于JavaEE应用各层的解决方案,是企业应用一站式开发很好的选择,在表现层它提供了Spring MVC以及整合Struts的功能,在业务逻辑层可以管理事务、记录日志等,在持久层可以整合Hibernate、Mybatis等框架。

虽然Spring贯穿表现层、业务逻辑层、持久层,但Spring并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合。

Spring优点

 

1.非侵入式设计

Spring是一种非侵入式(no-invasive)框架,它可以使应用程序代码对框架的依赖最小化。

2.方便解耦、简化开发

Spring是一个大工厂,可以将所有 对象的创建、依赖关系的维护 交给Spring容器管理,大大降低了组建之间的耦合。

3.IOC控制反转

IOC——Inversion of Control控制反转,指的是将对象的创建权交给 Spring 去创建。

使用 Spring 之前,对象的创建都是由我们自己在代码中new创建,而使用 Spring 之后。对象的创建都是给了 Spring 框架。

4.支持AOP

AOP面向切面编程,主要应用在比如:安全、事务、日志等,进行集中式管理,从而提高程序的复用性。

5.支持声明式事务处理

通过配置就可以完成对事务的管理,无需手动编程。

6.方便整合其它优秀框架

Spring可以与大多数框架无缝整合。

Spring体系结构

Spring框架至今已集成了20多个模块,这些模块分布在以下模块中:

  • 核心容器(Core Container)
  • 数据访问/集成(Data Access/Integration)层
  • Web层
  • AOP(Aspect Oriented Programming)模块
  • 植入(Instrumentation)模块
  • 消息传输(Messaging)
  • 测试(Test)模块

Spring体系结构如下图:

 

Spring七大功能模块

Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Context。

1.Spring Core核心容器

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

  • 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容器中以名称检索对象。它还支持列表投影、选择以及常用的列表聚合。

核心容器提供Spring框架的基本功能,spring以bean的方式组织和管理Java应用的各个组件及其关系,spring使用BeanFactory来产生和管理Bean,是工厂模式的实现。

BeanFactory通过控制反转(IOC)模式将应用程序的配置和依赖性(类与类之间的关系)规范 与 实际的应用程序代码分开(尤指业务代码),从而降低了类与类之间的耦合度。

 

如果想更加深入了解SpringIOC的底层实现,请点击查看搞透IOC,Spring IOC看这篇就够了!

2.AOP面向切面编程

  • Spring-aop模块:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
  • Spring-aspects模块:提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。

AOP的实现原理为动态代理技术

 

比如典型的AOP的应用场景:

 

  • 日志记录
  • 事务管理
  • 权限验证
  • 性能监测

Spring AOP 采用了两种混合的实现方式:JDK 动态代理和 CGLib 动态代理。

  • JDK动态代理:Spring AOP的首选方法。 每当目标对象实现一个接口时,就会使用JDK动态代理。目标对象必须实现接口
  • CGLIB代理:如果目标对象没有实现接口,则可以使用CGLIB代理。

如果想更加全面深入的了解AOP,请点击查看Spring AOP全面详解(超级详细)

3.Spring Context模块

Spring上下文是一个配置文件,向spring提供上下文信息,spring上下文包括企业服务。

4. Spring Web模块

Web层由Spring-web、Spring-webmvc、Spring-websocket和Portlet模块组成。

  • Spring-web模块:提供了基本的Web开发集成功能,例如多文件上传功能、使用Servlet监听器初始化一个IOC容器以及Web应用上下文。
  • Spring-webmvc模块:也称为Web-Servlet模块,包含用于web应用程序的Spring MVC和REST Web Services实现。Spring MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成。
  • Spring-websocket模块:Spring4.0以后新增的模块,它提供了WebSocket和SocketJS的实现。
  • Portlet模块:类似于Servlet模块的功能,提供了Portlet环境下的MVC实现。

5.Spring DAO模块

提供了一个JDBC的抽象层和异常层次结构,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。

6.Spring ORM模块

Spring插入了若干个ORM框架,提供了ORM对象的关系工具,其中包括Hibernate,JDO和IBatisSQL Map等,所有这些都遵从Spring的通用事务和DAO异常层次结构

7.Spring MVC模块

MVC框架是一个全功能的构建Web应用程序的MVC实现。

Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器,Spring支持多种视图技术。

Spring MVC 的工作流程:

 


(1) 客户端发送请求,请求到达 DispatcherServlet 主控制器。
(2) DispatcherServlet 控制器调用 HandlerMapping 处理。
(3) HandlerMapping 负责维护请求和 Controller 组件对应关系。 HandlerMapping 根据请求调用对应的 Controller 组件处理。
(4) 执行 Controller 组件的业务处理,需要访问数据库,可以调用 DAO 等组件。
(5)Controller 业务方法处理完毕后,会返回一个 ModelAndView 对象。该组件封装了模型数据和视图标识。
(6)Servlet 主控制器调用 ViewResolver 组件,根据 ModelAndView 信息处理。定位视图资源,生成视图响应信息。
(7)控制器将响应信息给用户输出。

以上!

与[转帖]Spring体系结构:七大核心模块详解相似的内容:

[转帖]Spring体系结构:七大核心模块详解

https://www.toutiao.com/article/7088616970362487329/ spring是一个非常优秀的java框架,99%的公司都在使用,spring算是必备技能,所以一定要掌握好@mikechen Spring简介 Spring是一个基于控制反转IOC和面向切面编程

[转帖]redis中的bigkey问题

https://cdn.modb.pro/db/459810 什么是bigkey bigkey就是redis key/value体系中的大value问题。我们知道redis的底层数据存储结构中,有多种数据结构的实现。 String: 简单动态字符串 List: 双向链表、压缩列表 Hash: 哈希表

[转帖]Spring Boot 3 Ships November 2022, Delays Java Module Support

Spring Boot 3 Ships November 2022, Delays Java Module Supporthttps://www.infoq.com/news/2022/10/spring-boot-3-jax-london/ Join a community of experts.

[转帖]Spring Boot中Tomcat是怎么启动的

https://zhuanlan.zhihu.com/p/208318177 Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持。我们可以通过配置来指定我们需要的容器。 本文以我们平时最常使用的容器Tomcat为列来介绍以下两个知识点: Spr

[转帖]spring 多数据源的使用

目录作者:@dwtfukgv本文为作者原创,转载请注明出处:https://www.cnblogs.com/dwtfukgv/p/14848407.htmlspring 多数据源的使用在同一个项目中需要使用多个数据源,这就需要根据不同的场景进行切换数据源,spring给我们提供一种很方便的方式,那就

[转帖]Spring Boot 依赖包及作用

目录 作者:@dwtfukgv本文为作者原创,转载请注明出处:https://www.cnblogs.com/dwtfukgv/articles/10179922.html Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter这是Spr

[转帖]Spring-data-redis操作redis知识总结

https://www.yisu.com/zixun/218120.html 什么是spring-data-redis spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用的是使用jedis,但

[转帖]Spring Boot 配置文件相关操作

https://zhuanlan.zhihu.com/p/537590504 默认配置文件名称: application 常用后缀:propertiesymlyaml 优先级: properties > yml > yaml 1. Spring Boot 读取配置文件 假设配置文件 applicat

[转帖]Spring Cloud Alibaba Nacos 注册中心使用教程

一. 什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台,集注册中心+配置中心+服务管理于一身,基本特性如下: 服务发现和服务健康监测; 动态配置服务; 动态 DNS 服务; 服务及其元数据管理

[转帖]Spring Cloud 整合 SkyWalking

https://www.jianshu.com/p/e81e35dc6406 Java Agent 服务器探针 探针,用来收集和发送数据到归集器。参考官网给出的帮助 Setup java agent,我们需要使用官方提供的探针为我们达到监控的目的,按照实际情况我们需要实现三种部署方式 IDEA 部署