Author avatar

⁣⁣⁣⁣

Spring MVC 的工作流程?

8~10 min

首先,客户端发送请求,DispatcherServlet 拦截并通过 HandlerMapping 找到对应的控制器。 DispatcherServlet 使用 HandlerAdapter 调用控制器方法,执行具体的业务逻辑,返回一个 ModelAndView 对象。 然后 DispatcherS

声明式事务在哪些情况下会失效?

28~36 min

三分恶面渣逆袭:声明式事务的几种失效的情况 <

Spring 的事务传播机制?

4~5 min

事务的传播机制定义了方法在被另一个事务方法调用时的事务行为,这些行为定义了事务的边界和事务上下文如何在方法调用链中传播。 三分恶面渣逆袭:6种事务传播机制 Spring 的默认传播行为是 PROPAGATION_REQUIRED,即如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务

JDK动态代理和CGLib动态代理实现

10~13 min

①、JDK 动态代理实现: 三分恶面渣逆袭:JDK动态代理类图 第一步,创建接口 public interface ISolver { void solve(); } 第二步,实现对应接口 public class Solver implements ISolver { @Overr

Spring为什么要三级缓存?二级不行吗?

8~10 min

Spring采用三级缓存(singletonFactories、earlySingletonObjects、singletonObjects)主要是为了解决循环依赖中代理对象(如AOP)的创建和缓存问题。若仅用二级缓存,在某些场景下会导致代理对象重复生成或依赖注入不一致。以下是具体分析: 1. 三级

三级缓存中如果缺少第二级缓存会有什么问题?

16~21 min

如果Spring仅保留第一级缓存(singletonObjects)和第三级缓存(singletonFactories),而移除第二级缓存(earlySingletonObjects),会导致以下核心问题: 1. 破坏单例性:重复创建代理对象 场景:Bean A依赖Bean B,Bean B依赖Be

Spring 可以解决哪些情况的循环依赖?

19~25 min

看看这几种情形(AB 循环依赖): 三分恶面渣逆袭:循环依赖的几种情形 也就是说: AB 均采用构造器注入,不支持 AB 均采用 setter 注入,支持 AB 均采用属性自动注入,支持 A 中注入的 B 为 setter 注入,B 中注入的 A 为构造器注入,支持 B 中注入的 A 为 sette

构造器注入、setter方法注入、属性自动注入

27~35 min

在Spring框架中,构造器注入、setter方法注入和属性自动注入是三种主要的依赖注入方式,它们的区别主要体现在以下方面: 1. 注入方式与时机 构造器注入 方式:通过类的构造函数注入依赖,依赖项作为构造函数的参数传递。 时机:在对象创建时完成注入,依赖项

依赖注入的时候,直接Autowired比较直接,为什么推荐构造方法注入呢

20~26 min

在依赖注入中,推荐使用构造方法注入而非直接使用 @Autowired 字段注入,主要原因如下: 1. 不可变性(Immutability) 构造方法注入允许将依赖字段声明为 final,确保依赖在对象创建后不可变。这符合“不可变对象”的设计原则,避免了因依赖被意外修改而导致的潜在风险。 字段注入无法

InitializingBean

16~20 min

InitializingBean 是 Spring 框架中用于定义 Bean 初始化逻辑 的核心接口。它的作用是在 Bean 的属性注入完成后,执行自定义的初始化操作(如数据校验、资源准备、状态检查等)。通过实现该接口,开发者可以在 Bean 生命周期的特定阶段插入初始化代码。 核心机制 接口定义