最近很多网友在后台留言问关于Spring的循环依赖问题,这也是最近两年新出的面试频度较高的面试题!
下面我们就通过这篇文章让大家了解循环依赖的问题
什么是循环依赖?
循环依赖其实是指两个及以上bean相互持有对方,最终形成闭环的过程(一般聊循环依赖都是默认的单例bean),简单说就是A依赖B,B依赖C,C又依赖A。
其实在Spring中,有两种循环依赖的场景...
- 第一种:构造器的循环依赖
- 第二种:setter的依赖注入
第一种是没有办法解决的,而第二种可以使用提前暴露对象的方式进行解决
那么肯定有很多小伙伴会有疑问,为什么?
其实想搞明白这个问题,需要对Spring的Bean的生命周期有一个完整的了解,如下图:
大家可能对这个图不太熟悉,但是我要强调的是,图中我已经用三种颜色标识了,除了使用这部分之外,可以分为实例化和初始化,这也是解决问题的核心。
同时,Spring中还使用了三级缓存来解决问题:
上图就是Spring中的三级缓存,那么问题来了
- Spring是如何通过三级缓存来解决问题的?
- 一级缓存能不能解决?为什么?
- 二级缓存能不能解决?为什么?
- 为什么非要使用三级缓存?使用三级缓存是为了解决什么问题?
由于Spring家族的东西很多,一次性写完也不太现实。所以这一次先更新Spring【最核心】的知识点:AOP和IOC
无论是入门还是面试,理解AOP和IOC都是非常重要的。在面试的时候,我没怎么被问过MyBatis/Hibernate/Struts2这样的框架,而Spring就经常被问到。
本次PDF共有【142】页,涉及到的内容有:
- IOC和AOP的全面讲解
- Spring事务详解和相关问题
- Spring IOC/AOP相关面试题
Spring AOP/IOC源码笔记
这份【Spring AOP/IOC源码笔记】是全程手敲 肝出来的,共142页,希望各位读者可以转发关注支持一下!
添加小助手VX:xuanwo008即可获得【Spring AOP/IOC源码笔记与思维脑图】完整高清版的免费领取方式!
Spring AOP和 IOC介绍
- 1. Spring介绍
- 2. 引出Spring
- 3.Spring模块
- 4. Core模块快速入门
- 5. bean对象创建细节
对象依赖
- 1. 回顾以前对象依赖
- 2. Spring依赖注入
AOP入门
- 1. cglib代理
- 2. 手动实现AOP编程2.1案例分析:
- 3. AOP的概述
- 4. 使用Spring AOP开发步骤
- 5. 切入点表达式
JDBCTemplate和Spring事务
- 1. 回顾对模板代码优化过程
- 2. 使用Spring的JDBC
- 3. 事务控制概述
- 4.事务属性
Spring事务原理
- 1、阅读本文需要的基础知识
- 2、两个不靠谱直觉的例子
- 3、Spring事务传播机制
- 4、多线程问题
- 5、啥是BPP?
- 6、认识Spring事务几个重要的接口
Spring事务的几个线程安全问题
- 1、我的思考
- 2、图解出现的原因
- 3、解决问题
- 最后
IOC再回顾与面试题
- Spring IOC全面认知
- Spring IOC相关面试题
AOP再回顾
- 1、Spring AOP全面认知
- 2、基于代理的经典SpringAOP
- 3、拥抱基于注解和命名空的AOP编程
- 4、总结
这份【Spring AOP/IOC源码笔记】是全程手敲 肝出来的,共142页,希望各位读者可以转发关注支持一下!
添加小助手VX:xuanwo008 即可获得【Spring AOP/IOC源码笔记与思维脑图】完整高清版的免费领取方式!
另外准备一份干货满满的学习资料,送给大家,抓紧领取...