框架篇
框架篇
Spring-单例bean是线程安全的吗
问答环节
Spring-AOP相关面试题
问答流程
Spring-事务失效的场景
异常捕获处理
抛出检查异常
非public方法
问答环节
Spring-bean的生命周期
BeanDefinition
bean 流程
问答环节
Spring-bean的循环依赖(循环引用)
什么是Spring的循环依赖?
三级缓存解决循环依赖
二级缓存即可解决循环依赖
实例化的原始对象就是仅经过构造函数过后的对象,还没有经历后面的依赖注入等,所以是“半成品”
三级缓存解决代理对象问题
其实本质上来说,3级缓存缓存的就是对象的地址,通过把地址给B对象来走完B的流程
代理是在Bean的初始化后执行的,但是二级缓存是在对象实例化后写入的,因此二级缓存会丢失代理的“特性”
构造方法出现了循环依赖怎么解决?
三级缓存能够解决初始化过程中的循环依赖,不能解决构造函数产生的循环依赖
构造函数对应生命周期,构造未完成,连对象实例都没有,只能延迟某个对象的注入,才能解决
问答流程
这里面为什么也要有二级缓存,因为在流程进行中,三级缓存中产生的对象在第一次会放到二级缓存中,供后面的流程获取对象时使用,可以直接从二级缓存中获取到这个对象。如果没有二级缓存,将会导致每次都要从三级缓存中去创建对象,每次都要重新生成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)