Spring 原生是允许并解决了单层循环引用的,但从 Spring Boot 2.6.0 开始,默认禁止 Bean 之间的循环引用,如果存在循环引用就会启动失败报错。
此时要解决循环引用问题有两个办法:
-
设置Spring允许循环引用(推荐)。
spring: main: allow-circular-references: true
-
在循环引用的一方添加
@Lazy
。这种方式虽然也能解决循环引用,但随着循环引用数量的增加,需要添加大量的注解,非常繁琐,不推荐。
Spring 原生是允许并解决了单层循环引用的,但从 Spring Boot 2.6.0 开始,默认禁止 Bean 之间的循环引用,如果存在循环引用就会启动失败报错。
此时要解决循环引用问题有两个办法:
设置Spring允许循环引用(推荐)。
spring:
main:
allow-circular-references: true
在循环引用的一方添加@Lazy
。
这种方式虽然也能解决循环引用,但随着循环引用数量的增加,需要添加大量的注解,非常繁琐,不推荐。