这个简单的循环依赖问题,拿来检验Spring水平绰绰有余!

程序IT圈

共 1595字,需浏览 4分钟

 ·

2020-08-04 19:48

前两天晚上,正当我加班沉浸在敲代码的快乐中时,听到前桌的同事在嘀咕:Spring究竟是如何解决的循环依赖?

这让我想起最开始学Java的时候,掌握了一点基本语法和面向对象的一点皮毛。当时心里也是各种想法:

比如说面向切面是什么鬼?我面向我的对象还不够吗?

依赖注入是什么玩意儿?直接new一个不就行了吗......

现在再回过头看当时觉得有点不知天高地厚了。

因为Spring中的循环依赖非常重要,一方面是源码中为了解决循环依赖做了很多处理,另一方面是面试中一旦问到Spring中比较高阶的问题,循环依赖必定逃不掉。如果回答得好,那么这就是必杀技,反之就是被面试官反杀。

到现在,再面对Spring究竟是是如何解决循环依赖这个问题的时候,我已经可以明确的给出答案:Spring通过三级缓存解决了循环依赖,一级缓存为单例池、二级缓存为早期曝光对象、三级缓存为早期曝光对象工厂。

仅仅知道这个还不够,为了知道你掌握spring框架的程度,面试官还会追问:为什么要使用三级缓存来解决循环依赖问题呢?

这个简单的循环依赖问题,其实蕴含的是Spring 最核心的两个点:

  • 了解Bean的生命周期

  • 了解AOP原理

解决了这个疑问,才能够说是真正进入了Spring框架源码的世界。以小见大,在如今Spring生态系统如此庞大的情况下,要独自一人梳理好这些技术脉络并不容易。

所以,这里给大家推荐一个Java进阶训练营。除了会精讲大厂Spring面试题详解以外JVM调优、Springboot底层原理、MYSQL索引实现原理等都会涉及到。训练营为期4天,每晚20:00,进群即可0元领取听课名额。

具体课程安排如下:


训练营详细技术课程大纲:


DAY1:面试互联网大厂Spring面试题详解
1. Spring中Bean的生命周期有哪些步骤?
2. 什么是BeanDefinition?它为什么非常重要?
3. 什么是Bean的后置处理器?
4. 什么是Bean工厂的后置处理器?
5. 什么是BeanFactory?它与ApplicationContext的区别?
6. 什么是FactoryBean?它与BeanFactory的区别?
7. @Import、@Component、@Bean的区别是什么?
8. 什么是ImportBeanDefinitionRegistrar?它的作用是什么?

DAY2:面试必备JVM调优实战
1、class文件被加载后在内存中是如何存储的
2、方法区、永久代、元空间、热点代码缓存区
3、精讲虚拟机栈:动态链接、返回现场
4、堆、进入老年代的情况、GC
5、类加载器、运行时数据区、程序计数器如何协调工作
6、理清虚拟机栈、方法区、堆区之间的关联

DAY3:深入理解Springboot底层原理
1. springboot零配置的原理
2. springboot如何做到内嵌tomcat
3. springboot启动流程原理
4. 常见面试考点SPI规范讲解

DAY4:深入Mysql索引实现原理
1. B+树的定义
2. InnoDB中的“页”
3. InnoDB中主键索引生成过程
4. InnoDB中联合索引生成过程
5. 索引实战与优化

课程中将会提供的服务
1、技术答疑
直播期间,通过与讲师进行技术问题的切磋,讲师将会对相关问题进行解答。
2、助教督学
助教全程式陪伴学习,提醒到课、发送技术资料、整理学员学习需求。
3、技术资料辅助
在课程进行的同时,我们也准备了相应的技术脑图和知识点大全,方便进行系统学习。


本次课程全程不收取任何费用,长按识别扫码进群,和更多的小伙伴一起完成技术系统性进阶。

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报