Spring框架知识总结

目录

1、Spring框架有哪些设计模式?

2、介绍一下Spring框架和SpringBoot框架?

3、介绍一下SpringBoot具有哪些功能模块?

4、Spring用到了什么组件?

5、什么是IoC?   什么是AOP?

6、SpringBoot运行原理?

7、对于SpringBoot和SpringMVC的理解?


1、Spring框架有哪些设计模式?

1.单例模式:

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在 Spring 中,Bean 默认是单例的,这意味着每个 Bean 只会被创建一次,并且可以在整个应用程序中共享

2.工厂模式:
它提供了一种创建对象的方式,使得应用程序可以更加灵活和可维护。Spring 提供了多种工厂模式,如 BeanFactory 和 ApplicationContext 等,通过这些工厂可以创建和管理对象的实例。

3.代理模式:

代理模式是一种结构型设计模式,它允许开发人员在不修改原有代码的情况下,向应用程序中添加新的功能。在 Spring AOP(面向切面编程)就是使用代理模式的实现,它允许开发人员在方法调用前后执行一些自定义的操作,比如日志记录、性能监控等

4.观察者模式:
Spring 事件机制就是基于观察者模式实现的,通过事件源和监听器来实现对象之间的解耦。

5.适配器模式:
适配器模式是一种结构型设计模式,它允许开发人员将一个类的接口转换成另一个类的接口,以满足客户端的需求。在 Spring 中,适配器模式常用于将不同类型的对象转换成统一的接口。

2、介绍一下Spring框架和SpringBoot框架?

Spring

        Spring 是一个轻量级的开源框架,它提供了一种简单的方式来构建企业级应用程序。Spring 框架的核心是 IoC 和 AOP 两个概念。

IoC 是一种设计模式,它将对象的创建和依赖关系的管理从应用程序代码中分离出来,使得应用程序更加灵活和可维护。

AOP 是一种编程范式,它允许开发人员在不修改原有代码的情况下,向应用程序中添加新的功能。

Spring 框架提供了很多模块,包括核心容器、数据访问、Web、AOP、消息、测试等。开发人员可以根据自己的需求选择合适的模块来构建应用程序。

Spring Boot

        Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,使用它可以不再依赖 Spring 应用程序中的 XML 配置,为更快、更高效的开发 Spring 提供更加有力的支持。 Spring Boot 也提供了很多特性,包括自动配置、嵌入式 Web 服务器、健康检查、度量指标、安全性等。开发人员可以通过使用 Spring Boot Starter 来快速集成常用的第三方库和框架,比如 Spring Data、Spring Security、MyBatis、Redis 等

Spring Boot 是一个基于 Spring 框架的快速开发框架,它有以下优点:

  1. 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
  2. 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
  3. 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
  4. 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
  5. ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
     
  6. SpringBoot的核心:
                                   1、快速添加依赖
                                   2、内置web容器
                                    3、自动装配(即SpringBoot自动构建复杂对象,构建好的对象可以直接使用)


     

        Spring Boot 项⽬的⼀大特点:约定⼤于配置。较于Spring需要配置Bean的扫描路径,而SpringBoot就不需要

 

 

3、介绍一下SpringBoot具有哪些功能模块?

  1. 自动配置模块:自动配置根据项目中引入的依赖和应用程序的环境自动配置Spring应用程序。它大大减少了繁琐的配置过程。

  2. 起步依赖模块:Spring Boot提供了许多预配置的起步依赖,可以轻松添加常用的功能模块。例如,你可以通过添加spring-boot-starter-web起步依赖来快速构建Web应用程序。

  3. 嵌入式Web服务器模块:Spring Boot集成了嵌入式的Web服务器,如Tomcat、Jetty、Undertow等,可以使应用程序成为自包含的可执行JAR文件。

  4. 配置管理模块:Spring Boot简化了配置管理,可以使用属性文件、YAML文件、环境变量等来配置应用程序。

  5. 日志管理模块:Spring Boot集成了常见的日志框架,如Logback、Log4j2等,可以方便地配置和管理日志输出。

SpringBoot模块中操作数据库的模块是Spring Data JPA

4、Spring用到了什么组件?

  1. Spring Boot:Spring Boot是Spring框架的扩展,提供了自动配置和快速启动功能,简化了应用程序的开发和部署过程。

  2. Spring MVC:Spring MVC是一个基于模型-视图-控制器(MVC)设计模式的Web框架,用于构建Web应用程序。它提供了处理请求和响应的控制器、视图解析器等组件。

  3. Spring Data:Spring Data是一个简化数据库访问的组件,提供了对关系型数据库和NoSQL数据库的统一访问方式,包括Spring Data JPA、Spring Data JDBC、Spring Data MongoDB等子项目。

  4. Spring AOP:Spring AOP(面向切面编程)是一种编程范式,用于实现横切关注点的模块化。它可以将通用的横切逻辑(例如日志、事务管理等)与其他模块分离开来。

  5. Spring Core(核心):Spring Core是Spring框架的核心组件,提供了IoC(控制反转)和DI(依赖注入)容器,用于管理应用程序中的对象和依赖关系。

5、什么是IoC?   什么是AOP?

        IoC的含义是控制反转,举个汽车例子可以更好的帮助我们理解何为控制反转。

构建⼀辆⻋(Car Class),然⽽⻋需要依赖⻋身,⽽⻋身需要依赖底盘,⽽底盘需要依赖轮胎,由上往下一层层实现; 

一种汽车型号的轮胎尺寸大小是固定的,当需要生产不同尺寸大小的轮胎尺寸时,此时就需要由上到下修改轮胎尺寸参数,十分繁琐。为此我们转换思路,将原来由⾃⼰创建的下级类,改为传递的⽅式(也就是注⼊的⽅式),因为我们不需要在当前类中创建下级类了,所以下级类即使发⽣变化(创建或减少参数),当前类本身也⽆需修改任何代码,这样就完成了程序的解耦。
 

IoC容器的优点:实现了代码的解耦,无需关注代码实现的细节

        AOP见下图所示:

        

AOP的好处包括:

  • 降低代码的重复性:相同的横切关注点逻辑可以在多个地方重用,减少了代码冗余。
  • 提高代码的可维护性:将横切关注点从核心业务逻辑中分离出来,使代码更加清晰和易于理解。
  • 提高代码的可重用性:切面的逻辑可以独立于核心业务逻辑进行修改和扩展,提高了代码的可重用性。
  • 改善代码的灵活性和可扩展性:通过配置切面,可以动态地增加、删除或修改横切关注点的逻辑,而无需修改核心AOP是面向切面编程的缩写。

6、SpringBoot运行原理?

SpringBoot是一个基于Spring框架的快速开发脚手架,它的运行原理可以简单概括为以下几个步骤:

  1. SpringBoot的启动类是@SpringBootApplication注解标注的类,它会自动扫描同级包及其子包下的所有类,将它们作为Spring Bean进行加载。

  2. SpringBoot会根据classpath下的配置文件(application.properties或application.yml)来配置应用程序的行为,例如端口号、数据库连接等。

  3. SpringBoot会根据依赖关系自动配置应用程序的各种组件,例如WebMvc、JdbcTemplate等。

  4. SpringBoot会根据配置文件中的信息来启动内嵌的Tomcat、Jetty或Undertow等Web容器,将应用程序部署到Web容器中。

  5. 应用程序启动后,SpringBoot会自动运行所有实现了CommandLineRunner接口的Bean,这些Bean可以用来执行一些初始化操作。

7、对于SpringBoot和SpringMVC的理解?

 SpringBoot的理解:

        Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,可以理解为创建Spring框架的脚手架,大大提高了创建Spring项目的效率。同时SpringBoot框架还具备了约定大于配置的特点。

 Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
                Spring Boot 翻译⼀下就是 Spring 脚⼿架,就是为了快速开发 Spring 框架⽽诞⽣的
                 Spring Boot 项⽬的⼀大特点:约定⼤于配置。较于Spring需要配置Bean的扫描路径,而SpringBoot就不需要。

 SpringMVC的理解:

        Spring MVC是一个基于Java的Web框架,用于开发Web应用程序。它基于MVC(Model-View-Controller)设计模式,将应用程序的逻辑分为模型(Model)、视图(View)和控制器(Controller)三个部分,以实现代码的分离和模块化。

Spring MVC的工作流程如下:

  1. 客户端发送一个HTTP请求到服务器。
  2. 前端控制器(DispatcherServlet)接收到请求,并负责请求的分发和处理。
  3. 根据请求的URL,前端控制器将请求发送给合适的控制器(Controller)。
  4. 控制器处理请求,执行相应的业务逻辑,并可能访问数据库或其他外部服务。
  5. 控制器将处理结果封装为模型(Model)对象,交给视图解析器(View Resolver)。
  6. 视图解析器根据控制器返回的模型和视图的名称,找到对应的视图(View)。
  7. 视图负责渲染模型数据,并生成最终的响应内容。
  8. 响应内容通过前端控制器发送给客户端。

Spring MVC的特点和优势包括:

  1. 灵活性:Spring MVC以松散耦合的形式组织代码,可以与其他Spring框架集成,并可以与多种视图技术(如JSP、Thymeleaf、Freemarker等)搭配使用。

  2. 易于测试:通过使用MVC模式,控制器(Controller)和模型(Model)可以独立于视图(View)进行测试,提高了代码的可测试性。

  3. 强大的请求处理:Spring MVC提供了灵活的请求映射和处理机制,可以根据URL、请求参数、请求方法等进行精确匹配,并提供了丰富的支持RESTful风格的请求处理。

  4. 国际化和本地化支持:Spring MVC提供了多语言和多区域的支持,可以根据用户的语言和地区自动切换视图和文本资源。

  5. 强大的数据绑定和表单处理:Spring MVC支持数据绑定,可以将请求参数自动绑定到控制器中的Java对象,并提供了表单验证和错误处理的功能。

  6. 安全性:Spring MVC集成了Spring Security框架,可以方便地实现用户认证和授权功能。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙HarmonyOS开发用什么语言

1.网上流行一句有中国底蕴的话:鸿蒙系统方舟框架盘古大模型。都方舟框架了肯定主推的是ArkUI框架。其实还能使用C、Java和Js开发。 2.从API8开始,Java语言已经从鸿蒙开发剔除了,而官方推荐的是ArkTs.下图是ArkTS与TS、JS的关系。 ArkTs 是TS的…

BFS:八数码问题求解

八数码原题 剖析一下BFS BFS算法是一种图遍历算法,它从起点开始,逐层扩展搜索范围,直到找到目标节点为止。 BFS算法一般选择队列作为节点存储的数据结构,我们将搜索目标节点的问题抽象为寻找目标状态,那么队列…

Vue3 reative回显问题

1. reactive 在做项目的时候通常会遇到这种情况,比如我们有一个 Table 显示数据,添加 Table 数据的时候使用 dialog 弹出,在里面填写字段然后添加。 在 vue3 中,对于对象的响应式定义推荐使用 reactive ,那么可以写入…

运筹学经典问题(二):最短路问题

问题描述 给定一个图(有向图或无向图) G ( V , E ) G (V, E) G(V,E), V V V是图中点的集合, E E E是图中边的集合,图中每条边 ( i , j ) ∈ E (i, j) \in E (i,j)∈E都对应一个权重 c i j c_{ij} cij​(…

Android取消深色适配

从Android10(API 29)开始,在原有的主题适配的基础上,Google开始提供了Force Dark机制,在系统底层直接对颜色和图片进行转换处理,原生支持深色模式。当系统设置深色主题背景或者进入省电模式情况下会进入深色…

2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年烟花爆竹经营单位主要负责人证模拟考试题库及烟花爆竹经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供,烟花爆竹经营单位主要负责人证模拟考试题库是根据烟花爆竹经营单位主要负责人…

RGB颜色表示法(RGBA解释) 以及常见的色调

RGB:代表red,green,blue。即用这三个色调表示所有颜色。 表示方式如:(255,255,255)白色、(0,0,0)黑色 改变三个不同的数值可以得到不同的颜色,数值取值范围为0-255&#…

设计模式——模板方法模式

引言 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 问题 假如你正在开发一款分析公司文档的数据挖掘程序。 用户需要向程序输入各种格式 (PDF、 DOC 或 CSV&#…

Ubuntu 常用命令之 cp 命令用法介绍

cp命令在Ubuntu系统中用于复制文件或目录。它的基本格式是cp [选项] 源文件或目录 目标文件或目录。 以下是一些常用的cp命令选项 -i:在覆盖目标文件之前将给出提示。-r或-R:递归复制,用于目录的复制操作。-v:详细模式&#xff…

2023-12-12 AIGC-AI工具的基本工作原理

摘要: 2023-12-12 AIGC-AI工具的基本工作原理 AI工具的基本工作原理 AI工具的基本工作原理涉及到一系列复杂的技术和算法。这些原理可以根据不同类型的AI工具进行概括,包括机器学习、自然语言处理、图像识别等。以下是一些关键的AI工具及其工作原理的概述&#xff…

对于实例控制,枚举类型优先于readResolve

实例控制是指控制类实例的创建和使用过程,而 readResolve 方法是 Serializable 接口中的一个特殊方法,用于在反序列化时控制对象的实例。在一些情况下,使用枚举类型可以更优雅地实现实例控制,而不需要依赖 readResolve 方法。 下…

网络基础(十二):ACL与NAT

目录 一、ACL 1、ACL的概述 2、ACL的分类 3、ACL的应用 4、ACL的组成和基本原理 ​编辑 5、ACL的配置 5.1配置基本ACL 5.2配置高级ACL 二、NAT 1、NAT的概述 2、NAT的分类 3、NAT的工作原理 4、静态NAT的配置 5、动态NAT的配置 6、NAPT(端口映射&am…

查询某个类是在哪个JAR的什么版本开始出现的方法

背景 我们在依赖第三方JAR时,同时也会间接的依赖第三方JAR引用的依赖,而当我们项目中某个依赖的版本与第三方JAR依赖的版本不一致时,可能会导致第三方JAR的在运行时无法找到某些方法或类,从而无法正常使用。 如我正在开发的一个…

流程引擎相关资料

最近调研流程引擎相关知识,BPMN规范和流程引擎相关知识无法避开,以及市面上比较多的流程引擎产品。 BPMN2.0 基本形状 流对象(Flow Objects),流对象是定义业务流程的主要图形元素。它进一步细分为三个类别&#xff0…

[SUCTF 2018]MultiSQL MYSQL 预处理写

首先这道题需要预处理写马 之前在ctfshow中学习过预处理 我们来看看 CTFSHOW -SQL 注入-CSDN博客 首先我们开始判断是否存在注入 2^(if(10,1,0))2^(if(ascii(mid(user(),1,1))>0,0,1))判断出存在sql注入 然后我们开始fuzz 发现 select ,union 都没了 但是…

Mistral MOE架构全面解析

从代码角度理解Mistral架构 Mistral架构全面解析前言Mistral 架构分析分词网络主干MixtralDecoderLayerAttentionMOEMLP 下游任务因果推理文本分类 Mistral架构全面解析 前言 Mixtral-8x7B 大型语言模型 (LLM) 是一种预训练的生成式稀疏专家混合模型。在大多数基准测试中&…

探索顺序表:数据结构中的秩序之美(c语言实现常见功能接口)

在我们的数据结构探索中,我们已经探讨时间复杂度、空间复杂度。大家可以移步到我的上篇文章: 打开数据结构大门:深入理解时间与空间复杂度 今天,我们将深入研究另一个重要的主题——顺序表 全部的源代码大家可以去我github主页…

web服务器之——www服务器的基本配置

目录 一、www简介 1、什么是www 2、www所用的协议 3、WEB服务器 4、主要数据 5、浏览器 二、 网址及HTTP简介 1、HTTP协议请求的工作流程 三、www服务器的类型(静态网站(HTML), 动态网站(jsp python,php,perl)) 1、 仅提供…

Windows设备管理

1、前言 熟悉Windows系统的都应该使用过设备管理器。设备管理器将操作系统中所有已安装的设备分类展现出来。同时提供了安装、卸载、启用和禁用的功能。 那么,我们应该如何通过C编程的方式实现这种功能呢?答案很简单,那就是使用SetupDi函数族…

Lumerical 选项------superimpose structure

Lumerical 选项------superimpose structure 简介正文 简介 这里给大家介绍一下 Modal analysis 计算中的 superimpose structure 选项的作用。 正文 当我们勾选上 superimpose structure 选项时, 当我们取消勾选时 通过对比我们得到,勾选 superimp…