弹簧圆形参考示例
我在使用spring的一个工作项目中有一个循环引用,我无法修复,并且在启动时失败并出现以下错误:
'org.springframework.security.authenticationManager': Requested bean is currently in creation: Is there an unresolvable circular reference?
我试图在一个示例项目中以较小的级别重现相同的问题(没有我的工作项目的所有细节)。然而,我无法想出一个合理的场景,即弹簧因错误而失效。以下是我所拥有的:
public class ClassA {
@Autowired
ClassB classB;
}
public class ClassB {
@Autowired
ClassC classC;
}
@Component
public class ClassC {
@Autowired
ClassA classA;
}
@Configuration
public class Config {
@Bean
public ClassA classA() {
return new ClassA();
}
@Bean
public ClassB classB() {
return new ClassB();
}
}
我的项目中也有类似的场景,但失败了,我本以为春天也会在我的示例项目中抱怨。但它工作正常!有人能给我一个简单的例子,说明如何用循环引用错误来打破弹簧吗?
编辑:我使用javax.inject.Provider修复了这个问题。这两个项目中唯一的其他区别是使用的注释是javax.inject.Inject和javax.annotation.ManagedBean代替@Autowired和@Component。