当启动项目时,可能出现程序不能启动的情况,查看调试日志,会提示 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官方的初心是不希望开发者编写循环引用的代码,也就是说未来的某个版本可能强制不能使用循环引用,因此在项目中消除循环依赖是不得不面对的问题。