为什么阿里那么难进,原来精髓在这
最近很多水友在后台留言问关于Spring的循环依赖问题,这也是最近两年新出的面试频度较高的面试题!
下面我们就通过这篇文章让大家了解循环依赖的问题
什么是循环依赖?
循环依赖其实是指两个及以上bean相互持有对方,最终形成闭环的过程(一般聊循环依赖都是默认的单例bean),简单说就是A依赖B,B依赖C,C又依赖A。
其实在Spring中,有两种循环依赖的场景...
第一种:构造器的循环依赖
第二种:setter的依赖注入
第一种是没有办法解决的,而第二种可以使用提前暴露对象的方式进行解决
那么肯定有很多小伙伴会有疑问,为什么?
其实想搞明白这个问题,需要对Spring的Bean的生命周期有一个完整的了解,如下图:
大家可能对这个图不太熟悉,但是我要强调的是,图中我已经用三种颜色标识了,除了使用这部分之外,可以分为实例化和初始化,这也是解决问题的核心。
同时,Spring中还使用了三级缓存来解决问题:
上图就是Spring中的三级缓存,那么问题来了
Spring是如何通过三级缓存来解决问题的?
一级缓存能不能解决?为什么?
二级缓存能不能解决?为什么?
为什么非要使用三级缓存?使用三级缓存是为了解决什么问题?
为了弄懂这个问题,我在微信上跟马士兵老师聊了很久,恍然大悟!
这里面知识点很多,以后有机会要专门写一篇,如果你等不及,可以先去参加一下马老师的《大厂必备Spring》训练营
时间:7月16日-7月17日 两天,晚20:00开始
我为大家申请到了公众号专属福利,这两天的直播,大家可以免费报名!诚意够不够?
如何参加?
扫码加小助手,获取直播地址
报名即送架构师成长路线图
专属福利,名额有限,先到先得
第一天:
如何利用反射实现Autowired注解
一招教你如何手撕SpringIOC源码
Spring程序是如何启动的?
Spring是如何加载配置文件到应用程序的?
掌握核心接口BeanDefinitionReader
掌握核心接口BeanFactory
彻底搞懂Spring的refresh方法
BeanPostProcessor接口的作用及实现
BeanFactoryPostProcessor接口的作用及实现
第二天:
Spring Bean有没有必要实现Aware接口
Spring Bean的实例化过程大揭密
Spring Bean的初始化到底干了什么
彻底理解FactoryBean接口
完美解析Spring Bean的生命周期
Spring的Environment接口有什么作用?
为什么产生循环依赖问题
循环依赖在Spring中是如何解决的
如何巧妙回答Spring IOC面试题
连续两天(7月16日-7月17日)每天2小时(20:00-22:00),免费听《大厂必备Spring》,干货满满,只能帮到你这里了,快去一起学习吧...
现在扫码立即免费报名
扫码加小助手,获取直播地址
报名即送架构师成长路线图
专属福利,名额有限,先到先得
另外准备一份干货满满的学习资料,送给大家,抓紧领取...
如何参加?
扫码加小助手,获取直播地址
报名即送架构师成长路线图
专属福利,名额有限,先到先得
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 习近平拉美之行的三个“一” 7958940
- 2 微信或史诗级“瘦身” 内存有救了 7938994
- 3 男子求助如何打开亡父遗留14年手机 7845914
- 4 中国主张成为G20峰会的一抹亮色 7797674
- 5 中国对日本等国试行免签 7691318
- 6 7万余件儿童羽绒服里没有真羽绒 7541270
- 7 女生半裸遭男保洁刷卡闯入 酒店回应 7436558
- 8 70多辆小米SU7同一天撞墙撞柱 7330368
- 9 操纵股价 2人被证监会罚没近3.35亿 7249436
- 10 千年古镇“因网而变、因数而兴” 7193376