异常分析
Spring Boot 出现BeanCurrentlyInCreationException: Error creating bean with name: Requested bean is currently in creation异常是因为出现了两个bean相互依赖。如果 bean A依赖于bean B,而bean B又依赖于bean A,则将产生BeanCurrentlyInCreationException异常。
BEAN A -> BEAN B -> BEAN A (两个bean循环依赖)
BEAN A -> BEAN B -> BEAN C -> BEAN A (三个bean循环依赖)
当 spring boot 应用程序加载所有 bean 时,它会尝试自动连接依赖 bean。如果两个 bean 处于循环依赖关系中,则每个 bean 将等待另一个 bean 加载。加载 bean 时会出现死锁。因此,Spring Boot 应用程序将抛出异常。
如果 spring boot 应用程序中的两个或多个bean参与循环依赖,则spring boot应用程序无法在应用程序上下文中加载任何bean,因为每个bean 依赖于另一个bean。Spring boot 无法决定在循环依赖中首先加载哪个bean。因此,在将 bean 加载到应用程序上下文中时,spring boot 会抛出异常。
出现循环依赖的示例:
package com.demo;
public interface Animal {
String getName();
}
package com.demo;
import org.springframework.stereotype.Com