面试题:Spring(一)

1. Spring框架中bean是单例么?

@Service
@Scope("singleton")
public class UserServiceImpl implements UserService {    }
  • singleton : bean在每个Spring IOC容器中只有一个实例。
  • prototype:一个bean的定义可以有多个实例。

2. Spring框架中的单例bean是线程安全的么?

不是线程安全的 Spring框架中有一个@Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决 

 

3. AOP

Spring:AOP

AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

常见的AOP使用场景:

  1. 记录操作日志
  2. 缓存处理
  3. Spring中内置的事务处理 

 4. 事务

Spring:事务 

Spring失效场景

Spring中事务失效的场景有哪些 

  1. 异常捕获处理,自己处理了异常,没有抛出,解决:手动抛出
  2. 抛出检查异常,配置rollbackFor属性为Exception
  3. 非public方法导致的事务失效,改为public

 5. bean的生命周期?

6. 如何解决Spring中的循环引用?

 Spring中的循环引用

  • 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A
  • 循环依赖在spring中是允许存在,spring框架依据三级缓存已经解决了大部分的循环依赖
  1. 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象
  2. 二级缓存:缓存早期的bean对象(生命周期还没走完)
  3. 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象的

 

构造方法出现循环依赖怎么解决?

当您在Spring的一个bean的依赖项上使用@Lazy注解时,Spring不会立即创建该依赖项的bean实例。相反,它会创建一个代理对象(在大多数情况下是JDK动态代理或CGLIB代理),该代理对象会在实际调用方法时懒加载真正的bean实例。

  1. 当Spring尝试创建BeanA的实例时,它注意到BeanA的构造器依赖于BeanB
  2. 由于BeanB被标记为@Lazy,Spring不会立即创建BeanB的实例。相反,它会为BeanB创建一个代理对象,并将其注入到BeanA中。
  3. 类似地,当Spring尝试创建BeanB的实例时,它注意到BeanB的构造器依赖于BeanA。但此时,BeanA的实例已经存在(尽管它包含一个BeanB的代理),因此Spring可以安全地创建BeanB的实例(实际上是BeanB的代理所指向的实例,但在这个上下文中,重要的是BeanB的构造器不再等待BeanA的完整实例)。
  4. BeanABeanB中的方法首次尝试访问对方(通过代理对象)时,Spring才会实际创建并初始化缺失的bean实例。

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

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

相关文章

qt QFileSystemModel详解

1、概述 QFileSystemModel是Qt框架中的一个关键类,它继承自QAbstractItemModel,专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图…

从0开始深度学习(26)——汇聚层/池化层

池化层通过减少特征图的尺寸来降低计算量和参数数量,同时增加模型的平移不变性和鲁棒性。汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。 1 最大汇聚层、平均汇聚层 汇聚层和卷积核一样,是在输入图片上进行滑动计算,但是不同于卷积层的…

右旋圆极化散射后的stocks矢量 与T3矩阵的关系

T3矩阵如下 斯托克斯与T3的关系如下。 斯托克斯与T3均没有平均处理,即斯托克斯是完全极化波的(一种琼斯矢量得到),T3是由一个散射矩阵得到,只有一个特征值。

Java的枚举(详细)

枚举(enum)是Java中的一种特殊类型,用于定义一组常量。枚举类型可以提高代码的可读性和可维护性,使得常量的使用更加清晰和安全。以下是关于枚举的详细介绍: ENUM的源码 package java.lang; ​ import java.io.Serial…

蓝桥杯顺子日期(填空题)

题目:小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123&a…

支持 Mermaid 语言预览,用通义灵码画流程图

想像看图片一样快速读复杂代码和架构?通义灵码上新功能:智能问答支持 Mermaid 语言的预览模式,即支持代码逻辑可视化,可以把每段代码画成流程图,像脑图工具一样画出代码逻辑和框架。 操作步骤:选中代码块&a…

promise的用法以及注意事项,看了这篇你就会了

一,为什么要使用promise,ta能解决那些问题? Promise 是异步编程的一种解决方案: 从语法上讲,Promise是一个对象,从它可以获取异步操作的消息;从本意上讲,它是承诺,承诺它过一段时间…

DRAM有驱动吗?/usr/bin/cpp是C++相关的程序吗?BIOS到底是什么?

DRAM有驱动吗? 一般而言,以DRAM提供R/W操作的角度,DRAM不存在内核级驱动,因为各硬件访问DRAM都是通过硬件PATH,不需要软件驱动干预,这与一般所说的驱动程序不同,那些驱动程序大多是协调上层应用或内核程式…

汉明重量汉明距离译码与纠错

目录 汉明重量汉明距离汉明重量与校验矩阵的关系错误图样&最小距离译码规则检错纠错能力与最小汉明重量 汉明重量 定义14 设 G G G 不是零矩阵,则称非零码字中非零元的数量为该码字的汉明重。一个编码中所有非零码字的汉明重的最小值称为 G G G的最小汉明重。 …

【Unity】Unity拖拽在Android设备有延迟和卡顿问题的解决

一、介绍 在制作Block类游戏时,其核心的逻辑就是拖拽方块放入到地图中,这里最先想到的就是Unity的拖拽接口IDragHandler,然后通过 IPointerDownHandler, IPointerUpHandler 这两个接口判断按下和松手,具体的实现逻辑就是下面 public void On…

解线性方程组(二)

实验类型:●验证性实验 ○综合性实验 ○设计性实验 实验目的:进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法,提高编程能力和解算线性方程组问题的实践技能。 实验内容: 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…

易语言模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

python语言基础-4 常用模块-4.2 time模块

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 4.2 time模块 python中提供了处理时间的标准库time。利用time库可以获取时间、进行时…

Charles抓包_Android

1.下载地址 2.破解方法 3.安卓调试办法 查看官方文档,Android N之后抓包要声明App可用User目录下的CA证书 3.1.在Proxy下进行以下设置(路径Proxy->Proxy Settings) 3.1.1.不抓包Windows,即不勾选此项,免得打输出不…

进程崩溃难以定位,日志分析五步搞定|OceanBase故障排查实践

作者:胡呈清,爱可生 DBA 团队成员,擅长故障分析、性能优化。 背景 Server 进程崩溃的常见原因包括程序bug、文件损坏、磁盘坏块以及内存坏块,这类故障通常较难分析和定位。 在OceanBase 集群部署时,系统会自动配置co…

[spring源码]spring配置类解析

解析配置类 在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition我们把它称为配置类BeanDefinition AnnotationConfigApplicationContext a…

低压电容器衰减的计算方法

低压电容器的衰减(通常指电容器容量的衰减)是指电容器在长时间运行或经历一些不良工作环境下,电容值随时间逐渐减少的现象。这个衰减会影响电容器的工作性能,尤其是在无功补偿和功率因数校正等应用中。计算电容器衰减的具体方法可…

C++之priority_queue容器

priority_queue 是 C STL (Standard Template Library) 中的一种容器适配器,用于实现优先队列。优先队列是一种特殊的队列,其中每个元素都有一个优先级,元素的出队顺序取决于其优先级,而不是插入顺序。默认情况下,优先…

Maven的安装配置

文章目录 一、MVN 的下载二、配置maven2.1、更改maven/conf/settings.xml配置2.2、配置环境变量一、MVN 的下载 还是那句话,要去就去官网或者github,别的地方不要去下载。我们下载binaries/ 目录下的 cd /opt/server wget https://downloads.apache.org/maven/maven-3/3.9.6/…