我在使用 spring 的一个项目中有一个循环引用,我无法修复它,并且在启动时失败并出现以下错误:
'org.springframework.security.authenticationManager': Requested bean is currently in creation: Is there an unresolvable circular reference?
我试图在示例项目中以较小的级别重新创建相同的问题(没有我工作项目的所有细节)。然而,我一直无法想出一个合理的场景,即 spring 因错误而失败。这是我所拥有的:
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();
}
}
我的项目中有一个类似的场景,但失败了,我期待 spring 也会在我的示例项目中抱怨。但它工作正常!有人可以给我一个简单的例子来说明如何用循环引用错误来打破弹簧吗?
编辑:我使用 javax.inject.Provider 解决了这个问题。这两个项目中唯一的其他区别是使用的注解是 javax.inject.Inject 和 javax.annotation.ManagedBean 代替了@Autowired 和@Component。