java - Spring无法解析的循环引用

标签 java spring autowired inject

我知道这个问题之前已经被提出过,而且这是一个菜鸟问题,但我不知道如何解决这个问题。启动我的应用程序时出现无法解决的循环引用错误。结构如下。出了什么问题以及如何修复?

@Controller("AAA")
public class AAAImpl implements AAA {

    private final BBB BBB; //this is constructor injected

}

@Service
public class BBBImpl implements BBB {

    @Autowired
    CCC CCC;

}

@Service ( "CCC" )
public class CCCImpl extends AbstractQueryService<FinalSeminar, Long> implements CCC {

    @Resource
    AAA AAA;

}

最佳答案

1) 您不需要在任何其他组件中注入(inject) Controller 。它应该仅用于处理 HTTP 请求。不要在其中包含任何业务逻辑。您可以将其编写在服务层或管理层中。

2)您收到循环引用异常的原因是您的类 AAAImpl 包含对 BBBImpl 的依赖,而 BBBImpl 又依赖于 CCCImpl,而 CCCImpl 最终又依赖于 AAA。因此,Spring 无法创建任何这些 bean。

关于java - Spring无法解析的循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16726602/

相关文章:

java - 如何在初始化期间为 LinkedHashMap removeEldestEntry 提供自定义函数

java - 我的logging.properties自定义格式化程序不起作用

java - init() : Couldn't get lock for/var/lib/tomcat6/./tm.out 中的 Atomikos 错误

java - 如何在 JUnit+Spring 测试中 Autowiring 并注入(inject)一次对象?

java - Spring循环引用示例

Java 如何在 SystemInitializer 类中使用 Spring Autowired

java - 如何从原声带(最好是 mp3)中删除人声

java - 使用两个不同 while 循环中的变量

使用 MockMvc、MockHttpServletRequestBuilder::with user over https 进行 Spring 安全测试

spring - Spring AOP 后 Bean Autowiring 不起作用