【Spring循环依赖报错】The dependencies of some of the beans in the application context form a cycle
一、报错信息
***************************APPLICATION FAILED TO START***************************Description:The dependencies of some of the beans in the application context form a cycle: categoryController (field private com.vector.service.ICategoryService com.vector.controller.CategoryController.ICategoryService) ↓ categoryService (field private com.vector.service.IArticleService com.vector.service.impl.CategoryServiceImpl.articleService)┌─────┐| articleServiceImpl (field private com.vector.service.IUserService com.vector.service.impl.ArticleServiceImpl.iUserService)↑ ↓| userServiceImpl (field private com.vector.service.IArticleService com.vector.service.impl.UserServiceImpl.iarticleService)└─────┘
二、分析原因
类A需要通过构造函数注入的类B的实例(或者B中声明的Bean),而类B需要通过构造函数注入的类A的实例(或者A中声明的Bean),导致循环依赖注入。
三、解决方案
解决方案一
其中一个不要引用对方,避免循环依赖,代码解耦肯定是最优解。
解决方案二
选择其中一个使用@Lazy 注解。
@Autowired @Lazy private IArticleService articleService;
延迟互相依赖的其中一个bean的加载,从而解决Spring在初始化bean的时候不知道先初始化哪个的问题。
来源地址:https://blog.csdn.net/pdsu_Zhe/article/details/127657640