Spring常见面试题

news2024/10/5 19:11:08

Spring面试问题汇总①

  • ⭐Spring是什么
  • 对AOP的理解
  • ⭐对IOC的理解
  • ⭐如何实现IOC容器
  • SpringBoot、SpringMVC、Spring的区别
  • ⭐⭐ApplicationContext和BeanFactory的区别
  • ⭐⭐⭐SpringBean的生命周期
  • ⭐⭐解释下Spring支持的几种bean的作用域
  • ⭐⭐Spring框架中的单例bean是线程安全的吗?
  • ⭐⭐Spring框架中都用到了哪些设计模式
  • ⭐Spring事务的实现方式和原理以及隔离级别
  • ⭐Spring事务传播机制
  • ⭐Spring什么时候会失效
  • ⭐⭐什么是bean的自动装配,有哪些方式
  • ⭐⭐SpringMVC的工作流程
  • ⭐SpringMVC的主要组件
  • ⭐⭐SpringBoot自动配置原理
  • ⭐⭐如何理解SpringBoot的Starter
  • 什么是嵌入式服务器,为什么要使用嵌入式服务器


总结了目前主流平台中常见的面试题,标⭐为重点!

Cyberpunk


⭐Spring是什么

轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean (java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用,可以让我们的企业开发更快、更简洁
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架

  • 从大小与开销两方面而言Spring都是轻量级的。
  • 通过控制反转(loC)的技术达到松耦合的目的
  • 提供了面向切面(AOP)编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
  • 包含并管理应用对象(Bean)的配置和生命周期,这个意义上是一个容器
  • 将简单的组件配置、组合成为复杂的应用,这个意义上是一个框架

通过分离应用的业务逻辑与系统级服务进行内聚性的开发 ?

  • 比如写日志:如果没有使用aop,那么日志会分散在业务代码的四处,使用aop可以采用一个专门写日志的切面,让切面自动的打印日志

对AOP的理解

在这里插入图片描述


⭐对IOC的理解

容器概念、控制反转、依赖注入

控制反转:原本A依赖B是在A中直接创建B,而现在是IOC将B主动注入到A。

在这里插入图片描述在这里插入图片描述


⭐如何实现IOC容器

  1. 配置文件配置包扫描路径
  2. 递归包扫描获取.class文件
  3. 反射,确定需要交给IoC管理的类
  4. 对需要注入的类进行依赖注入

更详细的说法在这里插入图片描述


SpringBoot、SpringMVC、Spring的区别

在这里插入图片描述


⭐⭐ApplicationContext和BeanFactory的区别

  • 都是bean工厂,bean容器
  • Beanfactory是Spring中非常核心的组件,表示Bean工厂,可以生成Bean,维护Bean,而ApplicationContext继承了BeanFactory,所以AplicationContext拥有BeanFactory所有的特点,也是一个Bean工厂,但是ApplicationContext除开继承了Beanfactory之外,还继承了诸如EnvironmentCapable、MessageSource、ApplicationEventPublisher等接口,从而ApplicationContext还有获取系统环境变量、国际化、事件发布等功能,这是BeanFactory所不具备的、

源码在这里插入图片描述

  • 面试回答:
    ApplicationContext是BeanFactory的子接口
    ApplicationContext提供了更完整的功能:
    ①继承Messagesource,因此支持国际化。
    ②统一的资源文件访问方式。
    ③提供在监听器中注册bean的事件。
    ④同时加载多个配置文件。
    ⑤载入多个(有继承关系)上下文,使得每一个上下文都专注于一个特定的层次,比如应用的web层。

扩展在这里插入图片描述


⭐⭐⭐SpringBean的生命周期

  1. 解析类得到BeanDefinition
  2. 如果有多个构造方法,则要推断构造方法
  3. 确定好构造方法后,进行实例化得到一个对象
  4. 对对象中的加了@Autowired注解的属性进行属性填充
  5. 回调Aware方法,比如BeanNameAware,BeanFactoryAware
  6. 调用BeanPostProcessor的初始化前的方法
  7. 调用初始化方法
  8. 调用BeanPostProcessor的初始化后的方法,在这里会进行AOP
  9. 如果当前创建的bean是单例的则会把bean放入单例池
  10. 使用bean
  11. Spring容器关闭时调用DisposableBean中destory()方法

⭐⭐解释下Spring支持的几种bean的作用域

在这里插入图片描述


⭐⭐Spring框架中的单例bean是线程安全的吗?

不是线程安全的

在这里插入图片描述


⭐⭐Spring框架中都用到了哪些设计模式

在这里插入图片描述在这里插入图片描述在这里插入图片描述


⭐Spring事务的实现方式和原理以及隔离级别

在这里插入图片描述
在这里插入图片描述


⭐Spring事务传播机制

在这里插入图片描述
在这里插入图片描述


⭐Spring什么时候会失效

在这里插入图片描述


⭐⭐什么是bean的自动装配,有哪些方式

在这里插入图片描述
在这里插入图片描述


⭐⭐SpringMVC的工作流程

在这里插入图片描述


⭐SpringMVC的主要组件

  • 最核心的是HandlerMapping、HandlerAdapter,这俩都是接口
    因为ViewResolver(视图解析器)用于jsp,但现在前后端分离所以不是很重要

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


⭐⭐SpringBoot自动配置原理

在这里插入图片描述


⭐⭐如何理解SpringBoot的Starter

  • 使用spring + springmvc使用,如果需要引入mybatis等框架,需要到xml中定义mybatis需要的bean
  • starter就是定义一个starter的jar包写一个@Configuration配置类、将这些bean定义在里面,然后在starter包的META-INF/spring.factories中写入该配置类,springboot会按照约定来加载该配置类
  • 开发人员只需要将相应的starter包依赖进应用,进行相应的属性配置(使用默认配置时,不需要配置),就可以直接进行代码开发,使用对应的功能了,比如mybatis-spring-boot–starter,spring-boot-starter-redis

什么是嵌入式服务器,为什么要使用嵌入式服务器

拿tomcat举例:

  • 节省了下载安装tomcat,应用也不需要再打war包,然后放到webapp目录下再运行
  • 只需要一个安装了Java的虚拟机,就可以直接在上面部署应用程序了
  • springboot已经内置了tomcat.jar,运行main方法时会去启动tomcat,并利用tomcat的spi机制加载springmvc

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

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

相关文章

数据库视图注意事项

视图(view)是一种虚拟存在的表,其内容由查询定义 本身并不包含数据。 它是作为一个select语法查询到的结果集,以此为基表创建的一张虚拟表 基表 行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成 …

【ReadPaper学术交流会】结构重参数化

提出结构重参数化的论文RepVGG 重参数化已经用在了各个领域的各个方面:比如YOLO-V6,YOLO-V7,可以autoperform YOLO-V6和YOLO-V7的一个PP-YOLO 1 我们想要一个像VGG一样的全是3*3卷积,一卷到底的结构,这样的结构并行度高、速度快而且省显存。…

剑指offer----C语言版----第十三天

目录 1. 删除链表的节点 1.1 题目描述 1.2 Leetcode解题的思路一(双指针) 1.3 Leetcode解题的思路二(单指针) 1.4 剑指offer上的原题 1. 删除链表的节点 原题链接:剑指 Offer 18. 删除链表的节点 - 力扣&#xff…

【python】类型约束(类型提示的作用)

文章目录前言一、类型系统1.动态类型2.静态类型3.鸭子类型二、变量注解1.变量注解的语法2.注解鸭子类型三、复杂(复合型)变量的注解1.引入2.难题3. Any的妙用4.类型变量5.类型Optional总结前言 python是一种解释型强类型动态语言python3.5以前是没有类型…

【Python】基于高德地图API的坐标转换函数

【Python】基于高德地图API的坐标转换函数 API申请: lbs.amap.com/api/webservice/guide/api/convert/产品介绍 坐标转换是一类简单的HTTP接口,能够将用户输入的非高德坐标(GPS坐标、mapbar坐标、baidu坐标)转换成高德坐标。 …

【学习笔记之Linux】权限之目录权限与默认权限

权限概念 一件事是否允许被谁“做”,这就是权限。权限 用户 文件属性。   在Linux上,用户分为普通用户和root。root是超级管理员 ≈ 天王老子,只能够有一个。root的命令提示符是#;普通用户通过root创建,可以有多个…

【Android安全】Protobuf原理与解析

protobuf 简介 抓包时看到header中有这个: content-type: application/x-protobuf说明包的content是以protobuf格式编码的 关于protobuf的介绍,可以参考: https://techkranti.com/what-is-protobuf-explained-for-hackers/ protobuf 的背…

C++——类和对象(一)

目录 一. 面向过程和面向对象 二. 类的引入 三. 类的定义 1.结构 2.类的作用域 3.类的两种定义方式 四. 类的访问限定符及封装 1.引入 2.访问限定符 3.封装 五. 类的实例化 六. 类对象模型 七. this指针 1.this指针的引出 2.this指针的特性 一. …

JavaScript设计模式之面向对象编程

为了深入地学习 javascript ,奔着一名标准 Web 开发人员的标准,想要深入了解一下面向对象的编程思想,提高自己模块化开发的能力,编写可维护、高效率、可拓展的代码,最近一直拜读 《JavaScript设计模式》 ,对…

【LeetBook】二叉树

参考资料:LeetBook / 二叉树 前言 差不多的解题思路就是dfs能够解决,其次就是bfs。 主要是递归的解法。 一刷就是了解了 解题的 思路 后序再补一些二叉树的题再刷一刷 目录树的介绍树的遍历前序遍历中序遍历后序遍历层序遍历(广度优先搜索)递归解决问题“…

【FPGA】中值滤波处理BMP图片

文章目录一、中值滤波二、BMP图片格式三、功能实现1.代码设计思路2.shift IP核3.代码实现四、结果测试参考博客一、中值滤波 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。 中值滤波是基于排序统计理论…

【GO】K8s 管理系统项目[API部分--Ingress]

K8s 管理系统项目[API部分–Ingress] 1. 接口实现 service/dataselector.go import ("sort""strings""time"appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1"nwv1 "k8s.io/api/networking/v1" )// Ing…

JavaScript client screen offset scroll

文章目录JavaScript client screen offset scrollclientX和clientY、offsetX和offsetY、screenX和screenY、pageX和pageYclientWidth、offsetWidth、scrollWidthwindow.outerWidth、window.innerWidth、document.documentElement.clientWidthJavaScript client screen offset s…

【开发工具】Gradle的安装 与 配置环境变量

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Gradle安装配置教程一、安装Gradle二、配置环境…

C++: Essential C++ 读书笔记:面向过程编程:调用函数。

1:传值和传址区别 按值传递: 在调用函数中将原函数的值拷贝一份过去给被调用的函数,在被调用函数中对该值的修改,不会影响原函数的值。值传递,变量赋值,修改变量的值------修改的是新地址(复制地…

智能家居加速落地,景联文科技提供数据采集标注服务

“以AI驱动智能家居,智能家庭助手和智能家居安防同向发展的智能物联网是目前主流趋势。高质量的标注数据能够高效训练算法,加速应用落地。景联文科技为相关企业提供、智能语音助手、人脸识别、指纹识别门禁系统、非法闯入检测、扫地机器人智能终端控制等…

临床资料研究中的风险因素评估相关指标

前言 写这篇文章是因为最涉及的医学相关的项目比较多,有些常常遇到的概念容易混淆,在这里着重区分一下。(感谢广大学霸的分享) 1. Ratio 与Rate 的区别 Ratio:表示相对比,简单理解为一个数值相对于另一个…

【1】高危漏洞利用工具 (2023.1.6更新)-- Apt_t00ls

0x01 工具介绍增加CNVD-2023-00895包括:泛微、蓝凌、用友、万户、致远、通达、中间件、安全设备等多个高位漏洞。泛微: e-cology workrelate_uploadOperation.jsp-RCE (默认写入冰蝎4.0.3aes) e-cology page_uploadOperation.jsp-RCE (暂未找到案例 仅供检测poc) e-…

Vivado综合属性之ASYNC_REG

本文验证了综合属性ASYNC_REG对寄存器位置的影响。 ASYNC_REG用于单bit信号采用双(或多)触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。标记方式为: (* ASYNC_REG "TRUE" *) reg sync_0…

想在2023 年成为前端 Web 开发人员的分步指南

当我开始成为一名前端开发人员时,这是我希望拥有的路线图我想出了这个路线图,它有助于实现成为全能开发人员的目标。让我们开始吧。谁是前端开发人员?好的,现在谁是后端开发人员?那么如何成为一名前端开发人员呢&#…