Spring 如何解决循环依赖?( 四 )

  • 二级缓存:为“解决 AOP”而生,存放的是半成品的 AOP 的单例 Bean;
  • 三级缓存:为“打破循环”而生,存放的是生成半成品单例 Bean 的工厂方法 。
  • 如果你能理解上面我说的三条,恭喜你,你对 Spring 的循环依赖理解得非常透彻!
    关于循环依赖的知识 , 其实还有,因为篇幅原因,我就不再写了 , 这篇文章的重点,一方面是告诉大家循环依赖的核心原理,另一方面是让大家自己去 debug 代码 , 跑跑流程,挺有意思的 。
    可能有同学会问 “楼哥,你之前是不是经常看源码 , 然后这个流程,你是不是 debug 了很久?”
    我之前其实没怎么看过开源代码,这个流程,前期理论知识看了 2.5 个小时 , 然后 debug 4.5 小时,就基本全部走通了,最难的地方,就是三层套娃 , 稍微有些绕 。
    这里也简单说一下我看源码的心得:
    1. 需要掌握基本的设计模式;
    2. 看源码前,最好能找一些理论知识先看看;
    3. 学会读英文注释,不会的话就百度翻译;
    4. debug 时,要克制自己,不要陷入无用的细节 , 这个最重要 。
    其中最难的是第 4 步,因为很多同学看 Spring 源码,每看一个方法 , 就想多研究研究,这样很容易被绕进去了,这个要学会克制 , 有大局观,并能分辨哪里是核心逻辑,至于如何分辨 , 可以在网上先找些资料,如果没有的话,就只能多看代码了 。

    【Spring 如何解决循环依赖?】


    推荐阅读