前两天晚上,正当我加班沉浸在敲代码的快乐中时,听到前桌的同事在嘀咕:Spring究竟是如何解决的循环依赖?
这让我想起最开始学Java的时候,掌握了一点基本语法和面向对象的一点皮毛。当时心里也是各种想法:
比如说面向切面是什么鬼?我面向我的对象还不够吗?
依赖注入是什么玩意儿?直接new一个不就行了吗......
现在再回过头看当时觉得有点不知天高地厚了。
因为Spring中的循环依赖非常重要,一方面是源码中为了解决循环依赖做了很多处理,另一方面是面试中一旦问到Spring中比较高阶的问题,循环依赖必定逃不掉。如果回答得好,那么这就是必杀技,反之就是被面试官反杀。
到现在,再面对Spring究竟是是如何解决循环依赖这个问题的时候,我已经可以明确的给出答案:Spring通过三级缓存解决了循环依赖,一级缓存为单例池、二级缓存为早期曝光对象、三级缓存为早期曝光对象工厂。
仅仅知道这个还不够,为了知道你掌握spring框架的程度,面试官还会追问:为什么要使用三级缓存来解决循环依赖问题呢?
这个简单的循环依赖问题,其实蕴含的是Spring 最核心的两个点:
了解Bean的生命周期
了解AOP原理
解决了这个疑问,才能够说是真正进入了Spring框架源码的世界。以小见大,在如今Spring生态系统如此庞大的情况下,要独自一人梳理好这些技术脉络并不容易。
因此这节彻底理解Spring两大特性的课程值得一听,仅需0.02元。直播时间7.16-7.17每晚20:00,时长4小时,带你彻底理解生命周期源码解析、循环依赖源码。扫码可直接购课:
通过本次课程,你将收获:
正确理解Spring bean的生命周期,利用Spring提供的扩展点来完成特定需求。
梳理对象之间错综复杂的依赖关系,学会处理因使用不当会引发的意想不到的问题。
深入了解和运用Spring框架,高效阅读源码。
掌握**阿里、字节跳动跳动有关Spring面试真题的能力
本次集训的详细课程要点:
狭义层面Bean的生命周期
广义层面Bean的生命周期详解
彻底理解Spring中的BeanPostProcessor
彻底理解Spring中的BeanFactory
彻底理解Spring中的BeanFactoryPostProcessor
彻底理解Spring中解决循环依赖为什么要用三级缓存
课程福利:
参与直播及技术问答即可参与抽奖,包邮获赠纸质书籍《深入理解JAVA虚拟机》
课程配套资料限时领取:
深入Spring两大特性和源码,从大厂真题解析中获取技术思路,还可参与直播互动答疑。
即刻购课,让代码变得更灵活、业务组件间更解耦,扫码领取Java人员的葵花宝典:
☟☟戳阅读原文也可直接购课~