zoukankan      html  css  js  c++  java
  • spring bean循环依赖的解决方法

    今天在写业务代码的时候遇到了Spring Bean之间产生循环依赖的问题,报错信息为【The dependencies of some of the beans in the application context form a cycle】。

    排查代码,发现是我在A类中通过A类的构造函数注入了B类,而在B类中又通过B类的构造函数注入了A类导致的Spring Bean循环依赖问题。

    Spring Bean的循环依赖问题,是指类A通过构造函数注入类B的实例(或者B中声明的Bean),而类B通过构造函数注入类A的实例(或者A中声明的Bean),即将类A和类B的bean配置为相互注入,则Spring IoC容器会在运行时检测到此循环引用,并引发一个BeanCurrentlyInCreationException。与典型情况(没有循环依赖)不同,Bean A和Bean B之间的循环依赖关系迫使其中一个Bean在被完全初始化之前被注入到另一个Bean中(典型的一个【先有鸡还是先有蛋】场景)。

    解决的方法就是不使用基于构造函数的依赖注入,可通过下面两种方式达到目的:

    1.在实例变量上使用@Autowired注解,让Spring决定在合适的时机注入,而非在初始化类的时候就注入。

    2.用基于setter方法的依赖注入取代基于构造函数的依赖注入来解决循环依赖。

    "年轻的时候以为不读书不足以了解人生,直到后来才发现如果不了解人生,是读不懂书的。"

  • 相关阅读:
    004 eclipse-jee-2021-06-R-win32-x86_64的使用
    男神鹏:Mac系统下查看和生成SSH Key
    每天一个Python小技巧(2)
    每天一个Python小技巧(1)之JSON转义
    测试平台系列(26) 编写用例详情页(1)
    测试平台系列(25) 编写用例树
    iOS 骨架屏
    OC 拖拽View
    OC 配置全局PCH 文件
    iOS masonary 约束 做动画
  • 原文地址:https://www.cnblogs.com/yanggb/p/13125998.html
Copyright © 2011-2022 走看看