温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,同学们,搁到这儿啊。我相信大家应该是比较。郁闷,比较懵逼,可能有些同学是不是听要有坚持,能够坚持听完的同学估计都是头发都快掉了对吧,所以说呢,这个呢非常的不容易啊,这个才是真真正正的阅读spring源码的内功,如果你有兴趣。你也真的是愿意挑战自己,可以跟着严格的步骤打一下这些断点,OK,那么最后啊,我们呢啊,刚才呢,这个呢,结束完了以后,我们又重打了一次啊,那么这个时候最终我们会形成你看。ABABAB是不是里面有bab,里面有A,里面有bab里面有A,这样是不是满足了他们的循环依赖,不会报那些错误,听懂了吧?那么在这了以后看着高度总结了就这么点东西,其实你有本事把这个缓存的迁移过程整明白,那么这样的话,你对spring的这个源码和打断点,我相信应该是有一定的水平,OK,那么所以说。
01:00
这个时候我相信对123级缓存大家应该是非常清晰了,那么再来读一下这个的迁移过程。精简版的啊。A创建过程中需要B,于是A先将自己放到三存缓放,放到三级缓存里面,然后去实例化B同学们还记不记得,首先我们是先是A这什么写了个什么拉姆达表达式啊,我这是不是还给同学们故意抓了个图叫这个拉姆达表达式啊,就是一句话。我们去容器里面找,有直接用,没有就create,在create过程当中,在popul填充它的属性,然后再把它放到池子里面,慢慢的推到一级缓存里面。对外暴露,提供给大家调用。说是简单。但是真是要打断点,你就把它一步步整明白,还是需要你花一点时间好。第二步,B实例化的过程当中,发现有需要A,于是B就去找,我们用是不是都一般去容器里面拿,都是先从一级缓存里面去拿,找得到我用找不到,再去找二级,找得到我用找不到,再去找三级,终于找到了A,为什么我们前面是不是说过A之前是不是这有一个在拉姆达表达式的成型状态,那么这个时候,然后把三级缓存里面这个A。
02:13
生成,慢慢的把它放到二级缓存里面,并删除三级缓存里面的A,第三步B通过一系列顺利完成,先完成B,然后将自己放到一级缓存里面,此时B里面的A依然是创建中的状态,明白了吗?我们先保证这个B先去一级缓存,两个嘛,总要保一个OK,先B后A,然后再回来杀个回马枪,接着回来创建我们的A,此时B创建结束,直接再从一级缓存里面拿到B,然后完成创建,并且最终把A自己也放到一级缓存里面,两个最后都到一级缓存里面,经历完整的生命周期,病的对象也就是放到了我们的单利池里面,在容器里面的病真真正正可以开张对外暴露服务了。好,那么最终的结果就是我们的。
03:07
通过这样的模式形成了什么,你中有我,我中有你,你中有我,我中有你A有BB有A有BB有A听懂,所以说呢,有兴趣的同学呢,请你呢跟着杨哥呢,去打一下这个断点,那么全部断点啊,今天所打的每一步,那么。我呢都会发送给大家,你实在找不到,你就照着我的断点去打一下,假设你愿意的话,OK,好。那么这个呢?就是我们的这个spring的循环依赖,所以说能不能坚持,那么就看你能不能照着我的断点一步步打下来好吗?那下一讲我们呢,再带着大家复习一下刚才我们打的断点的步骤,就是这张图也给大家做了详细的解释好吗?好,那么同学们,我们这一讲就先到这儿。嗯,辛苦了各位同学,谢谢大家。
我来说两句