欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Bean的循环依赖 The dependencies of some of the beans in the application context form a cycle

程序员文章站 2022-06-26 12:54:34
...
***************************
APPLICATION FAILED TO START
***************************

Description:

The dependencies of some of the beans in the application context form a cycle:


   aServiceImpl defined in URL [D:\CODE\Java\IdeaProjects\test\AService.class]
┌─────┐
|  bServiceImpl defined in URL [D:\CODE\Java\IdeaProjects\test\BService.class]
↑     ↓
|  cServiceImpl defined in URL [D:\CODE\Java\IdeaProjects\test\CService.class]
└─────┘

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

 

解决方案

@Autowire配合@Lazy懒加载使用

@Lazy
@Autowired
public BServiceImpl() 构造函数

 

相关标签: Spring Java