S

Spring 面试题

连载中

Spring 面试题:IoC 容器、AOP 原理、声明式事务、Bean 生命周期与高频源码。

5 篇文章 开始阅读

教程目录

1

Spring 的 IOC 和 DI 是什么?

一、IOC(控制反转) 对象的创建和依赖管理由容器负责,而不是在代码中 new。控制权从业务代码转移到 Spring 容器。 二、DI(依赖注入) IOC 的实现方式。容器把对象依赖的其他对象注入进去。 三种注入方式: - 构造器注入:通过构造方法,推荐(依赖不可变、无循环依赖风险)。 - sett

2

Spring Bean 的作用域有哪些?

一、singleton(默认) 容器中只有一个实例,全局共享。适合无状态 Bean。 二、prototype 每次获取都创建新实例。适合有状态 Bean。 三、request(Web) 每次 HTTP 请求一个实例。 四、session(Web) 每个 HTTP Session 一个实例。 五、ap

3

Spring AOP 的实现原理?

一、AOP 概念 面向切面编程,把横切逻辑(日志、事务、权限)从业务代码中抽离,通过动态织入实现。 二、动态代理 JDK 动态代理:目标类实现接口时使用,基于反射生成代理类。 CGLIB 代理:目标类无接口时使用,基于 ASM 生成目标类的子类。 Spring 自动选择:有接口用 JDK,无接口用

4

Spring 事务的传播行为和隔离级别?

一、七种传播行为 传播行为 说明 REQUIRED(默认) 有事务就加入,没有就新建 REQUIRES_NEW 总是新建事务,挂起当前事务 SUPPORTS 有事务就加入,没有就非事务执行 NOT_SUPPORTED 非事务执行,挂起当前事务 MANDATORY 必须有事务,否则抛异常 NEVER

5

Spring 如何解决循环依赖?

一、什么是循环依赖 A 依赖 B,B 依赖 A,形成循环。 二、三级缓存 Spring 通过三级缓存解决 singleton 的循环依赖: singletonObjects:一级缓存,存完全初始化好的 Bean。 earlySingletonObjects:二级缓存,存早期引用(实例化但未属性赋值)