• 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
  • 相关阅读:
    配置文件配置网络
    安装Linux centos 7.3
    java二维字符数组的输入
    前端保存JSON文件到本地
    在Springboot中使用swagger2
    Vue better-scroll使用指南
    解决端口占用问题
    CheckSum(校验和)计算
    区分按字寻址与按字节寻址
    进制转换
  • 原文地址:https://www.cnblogs.com/smallVampire/p/13273269.html
Copyright © 2020-2023  润新知