Spring/SpringBoot/SpringCloud面试题

news2024/11/23 12:41:27

SpringBoot和SpringMVC的区别

  1. 形式上:SpringBoot是一个自动化配置的工具;SpringMVC是一个web框架
  2. 在搭建项目时:SpringMVC需要手动配置xml文件,同时需要配置Tomcat服务器。而SpringBoot采用约定大于配置的方式,进行自动装配,同时内置服务器,打开就可以直接用

简述 Spring Boot Starter 的工作原理

SpringBoot核心就是几个注解:SpringBootConfiguration、EnableAutoConfiguration、ComponentScan,依赖这几个注解完成了所谓自动装配的功能,这个自动装配说简单点就是把你需要的Bean注入到Spring容器里面。(SpringBootApplication 启动类上的注解,只是简单的组合了SpringBootConfiguration、EnableAutoConfiguration、ComponentScan几个注解,避免开发者一个一个的去加)。
SpringBoot程序在启动过程中会解析SpringBootConfiguration、EnableAutoConfiguration、ComponentScan三个注解:

  1. SpringBootConfiguration:包含了Configuration注解,实现配置文件
  2. ComponentScan:指定扫描范围
  3. EnableAutoConfiguration:通过源码可以知道,该注解使用Import引入了AutoConfigurationImportSelector类,而AutoConfigurationImportSelector类通过SpringFactortisLoader加载了所有jar包的MATE-INF文件夹下面的spring.factories文件,spring.factories包含了所有需要装配的XXXConfiguration类的全限定名。XXXConfiguration类包含了实例化该类需要的信息,比如说如果这是个数据源Configuration类,那么就应该有数据库驱动、用户名、密码等等信息。

总结:
SpringBoot并没有想象那么神秘,就是这么几件事情:
1.提供了一个配置类,该配置类定义了我们需要的对象的实例化过程;
2.提供了一个spring.factories文件,包含了配置类的全限定名;
3.将配置类和spring.factories文件打包为一个启动器starter;
4.程序启动时通过加载starter.jar包的spring.factories文件信息,然后通过反射实例化文件里面的类。

Spring Boot 在启动的时候会干这几件事情:

① Spring Boot 在启动时会去依赖的 Starter 包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的 Jar 包去扫描项目所依赖的 Jar 包。

② 根据 spring.factories 配置加载 AutoConfigure 类

③ 根据 @Conditional 注解的条件,进行自动配置并将 Bean 注入 Spring Context

其实就是 Spring Boot 在启动的时候,按照约定去读取 Spring Boot Starter 的配置信息,再根据配置信息对资源进行初始化,并注入到 Spring 容器中。这样 Spring Boot 启动完毕后,就已经准备好了一切资源,使用过程中直接注入对应 Bean 资源即可。

springMVC常用基本组件

1.DispatcherServlet

是SpringMVC框架了里面的前端控制器

作用:统一处理用户发来的请求并和响应,相当于一个中间转换器,减少了各个组件之间的调度,减少的耦合性。

  1. HandlerMapping

是SpringMVC框架里面的处理器映射器

作用:根据请求发来的url 和method找到对应的Handler(就是说在一个用到SpringMVC框架的项目中会有好多方法和逻辑这个组件的作用就是找到对应的方法和组件返回给前端控制器)

3.Handler

是程序员自己创建的控制器

作用:就是程序员自己根据用户的要求写出的逻辑方法为用户提供提供服务(我理解的)

4.HandlerAdaper

是SpringMVC框架提供的 处理器适配器

作用:根据前端控制器传过来的Handler找到自己对用的控制器并执行

(我的理解就是处理器映射器找到对应的方法,但这些方法会需要一下特殊的配置或者参数这个组件作用就是提供并执行的)

5.ViewResolver

是SpringMVC框架提供的 视图解析器

作用:就是字如其名,就是用来将处理的结果解析成视图来展现给用户。视图解析器根据逻辑视图名解析成物理视图名,生成View视图对象,最后对视图进行渲染响应给用户。

6.View

是开发者自己提供的 视图

作用就是,根据model对象的要求来渲染 页面,然后但会给前端控器在相应给用户。

SpringMVC的基本流程

在这里插入图片描述

执行前;当一个请求发来时先进服务器(Tomcat),在服务器中会有拦截器,过滤器啊,等这些功能走完之后,才真正的进入了框架中。

1.用户发来一个请求,首先进入的是前端控制器DispatcherServlet

2.前端控制器将(DispacherServlet)用户发来的请求发送给处理器映射器(HandlerMapping)

3.处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器(Handler),并且将其封装成处理器执行链,返回给前端控制器。

4.处理器适配器接收到来自前端控制器的执行链后,找到对应执行此执行链的处理器适配器(HandlerAdapter)来调用的具体的控制器(就是说其对应的方法或者逻辑)

5.控制器执行完成后,会返回一个ModelAndView对象给处理器适配器

6.处理器适配器将返回来的ModelAndView对象返回给前端控制器(到这里所有的业务处理过程就要完了,接下就是将结果以页面的的形式相应给用户)

7.前端控制器将返回回来的ModelAndView对象交给视图解析器(ViewResolver),视图解析器根据传过里的View对象解析成对应的页面对象,然后将页面对象和Model对象返回给前端控制器。

8.前端控制器再将返回回来的对象交给视图(View),视图根据传过来的Model对象再一次的对页面进行渲染,然后在返回给前端控制器。

9.前端控制器将完成的结果响应给浏览器,然后浏览器在展现给用户。

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

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

相关文章

【Linux系统】第五篇:Linux中编译器gcc/g++的使用

文章目录一、编译工具gcc/g二、程序编译的过程🎄预处理🎄编译🎄汇编🎄链接三、动态链接和静态链接🌻动态链接🌻静态链接🌻 程序动、静态链接的区分一、编译工具gcc/g gcc/g 分别是 C/C 的编译器…

【wp】hgame2023 week3 RePwn

【wp】hgame2023 week3 Re&&Pwn Re cpp那个chacha20加密不会。 kunmusic 用dnspy逆dll,在Program的Main方法中找到了初始化的数据 下断点执行,拷贝出data 写一份脚本进行data与104的异或 def step_one():with open("./data", enc…

发明专利申请流程资料

​发明专利申请流程 依据专利法,发明专利申请的审批程序分为: 1、受理阶段 2、初步审查阶段 3、公布阶段 4、实质审查阶段 5、授权阶段 发明专利申请所需资料 1、发明专利请求书。 2、说明书。 3、权利要求书。 4、说明书摘要。 5、有附图的可同时提交说…

Actionchains在selenium中的使用方法

今天分享一下selenium最常用的ActionChains的使用,以及碰到的一些问题的解决。 1.selenium解决鼠标悬停的问题 今天抓取某个平台的数据时发现有的数据需要鼠标悬停在上面才能加载出来,于是就想到了使用ActionChains解决悬停的问题,下面是思…

计算机组成原理 | 第九章:控制单元的功能 | 微操作命令 | 时钟周期

文章目录📚微操作命令的分析🐇取指周期🐇间址周期🐇执行周期🥕非访存指令🥕访存指令⭐️🥕转移指令🐇中断周期📚控制单元的功能🐇控制单元的外特性&#x1f9…

分享微信报名小程序怎么做_瑜伽健身房培训报名小程序开发介绍

活动报名收费签到小程序,支持个人免费组织报名收款和现场签到。随时随地管理活动、发布活动、查看收入明细提现资金更效率。 活动报名收费签到小程序主要功能有: 在线报名:通过二维码或链接分享活动入口,亦可轻松放进入公众号。 …

客户端通过SSH连接Linux服务器超时问题解决方法汇总

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:善假于物&#…

Windows无法进入睡眠模式怎么办?

睡眠模式是电脑的一种低功耗模式,能减少耗电。当你要离开电脑一阵,但又不想关闭文档和程序,就可以选择让电脑暂时休眠。 如果你的电脑无法进入睡眠模式,可以尝试下面几种方法: 更换电源选项检查电源命令使用电源疑难…

开源机器学习软件对AI的发展意味着什么?

作者| Max Langenkamp OneFlow编译 翻译|徐佳渝、杨婷 为什么要关注机器学习开源软件(MLOSS)?在我们看来,MLOSS对AI发展来说举足轻重,但未获重视。 机器学习开源软件是开源许可下发布的专为机器…

“易”起涨知识|人人都在追捧的低代码开发,到底有什么优势?

低代码的根本价值在于:劳动力转移。运营、产品能 cover 部分开发工作,实现研发流左移,敏捷迭代。 劳动力转移只是表面,低代码价值还是归属于自动化了信息传递。 产品用文字和交互图(PRD)表达了一遍完整的产…

List、Set、Map的区别

List、Set、Map的区别 ​ (图一) 1.面试题:你说说collection里面有什么子类。 (其实面试的时候听到这个问题的时候,你要知道,面试官是想考察List,Set) 正如图一,lis…

一文深入分析arm64 cache机制

说明: Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio 1. 概述 先来看一下经典的存储器层次结构图: 不同存储器技术的访问时间差异很大,CPU和主存…

2023年深圳前端培训机构排名,评价较高的机构分享

深圳前端培训机构排行榜的前三名是哪家呢?不少学生在选择学习前端开发的时候,都会通过网络来找一些相关的排行,评判哪家机构的教学比较好,今天小编就来针对这类相关的培训为大家分享一些内容,帮助大家选择更适合自己的…

RabbitMQ面试知识点总结

1.消息模式 P2P Worker Pub/Sub(exchange 4种) 四种交换机:direct/topic/headers/fanout,默认交换机是direct,其中Publish/Subscribe,Routing,Topics三种模式可以统一归为Exchange模式,只是创建时交换机的…

【LeetCode每日一题】【2023/2/1】2325. 解密消息

文章目录2325. 解密消息方法1:哈希表2325. 解密消息 LeetCode: 2325. 解密消息 简单\color{#00AF9B}{简单}简单 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第…

SpringBoot 监控统计(SQL监控、慢SQL记录、Spring监控、去广告)

1 基本概念Druid 是Java语言中最好的数据库连接池。虽然 HikariCP 的速度稍快,但是,Druid能够提供强大的监控和扩展功能 ,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面&…

算法---冗余连接

题目 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges ,edge…

蓝桥杯2022 python C组

蓝桥杯2022 python C组 跟之前的就四题不一样 第二题:特殊时间 就是i 从0-9,j从0-9 i是三个一样的,然后看看他们能不能成为 年 月日 时分 成为年只要大于0就好了,称为月日的话月要从1-12,日呢,特殊的日子…

Kylin入门实战(数据源添加 + Model定义 + Cube构建 + 结果查询 + 查询限制)

目录1. 入门实战目的2. Hive源数据准备3. 创建project并添加Hive数据源4. 定义model5. 定义Cube6. 构建cube7. 查询cube构建后的结果8. 查询限制1. 入门实战目的 实现从不同的维度统计员工的工资,例如从岗位类型、员工年龄、部门等不同维度,进行多维度的…

【LeetCode每日一题】【2023/1/30】1669. 合并两个链表

文章目录1669. 合并两个链表方法1:模拟1669. 合并两个链表 LeetCode: 1669. 合并两个链表 中等\color{#FFB800}{中等}中等 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0…