当启动项目时,可能出现程序不能启动的情况,查看调试日志,会提示 The dependencies of some of the beans in the application context form a cycle...
原因是SpringBoot 从 2.6 开始默认不允许出现 Bean 循环引用。而且这个是在Bean 定义上也就是类上就不允许出现循环引用。
解决方式
1、允许循环引用存在
方式1.在全局配置文件设置允许循环引用存在:
spring:
main:
allow-circular-references:true
方式2.在SpringApplicationBuilder 添加设置允许循环引用:
public static void main(String[] args) {
new SpringApplicationBuilder(DemoApplication.class).allowCircularReferences(true).run(args);
}
2、消除循环依赖
Spring官方的初心是不希望开发者编写循环引用的代码,也就是说未来的某个版本可能强制不能使用循环引用,因此在项目中消除循环依赖是不得不面对的问题。
本文介绍了Spring Boot 2.6及以后版本中禁止Bean循环引用的原因,并提供了两种解决方案:一是通过配置允许循环引用;二是重构代码以消除循环依赖。
2219

被折叠的 条评论
为什么被折叠?



