zoukankan      html  css  js  c++  java
  • spring循环依赖解决

    循环依赖的发生:

      循环依赖发生类似于java中的线程死锁,A实例化需要依赖B,B实例化需要依赖A,如此陷入依赖循环,就出现了循环依赖。

    解决思路:

      A实例化的时候由于需要依赖B,A此时处于无法实例化状态(B此时没有实例化,无法依赖),所以可以将半实例化的A做一个伪实例化声明(Spring中的第三级缓存),那么B实例化的时候,就可以找到需要依赖的A(虽然是假的,但是可以让B继续往下走),这样B可以顺利实例化完成,之后A再实例化就发现B可以正常依赖了,A也可以继续实例化了。这样就解决了循环依赖问题。

    Spring的解决方式:

    使用@lazy注解,加了lazy的原理如下:

    • A的创建: A a=new A();
    • 属性注入:发现需要B,查询字段b的所有注解,发现有@lazy注解,那么就不直接创建B了,而是使用动态代理创建一个代理类B
    • 此时A跟B就不是相互依赖了,变成了A依赖一个代理类B1,B依赖A
  • 相关阅读:
    2-2. 然后是几点(15)
    2-1. 厘米换算英尺英寸(15)
    2-0. 整数四则运算(10)
    忙碌的下半学期
    ACM 第十九天
    ACM 第十八天
    ACM 第十七天
    凸包模板
    极角排序常用方法
    ACM 第十六天
  • 原文地址:https://www.cnblogs.com/smallVampire/p/13273269.html
Copyright © 2011-2022 走看看