【发布时间】:2026-02-19 21:30:01
【问题描述】:
我在构建 Spring Boot 项目时遇到循环依赖(交叉引用)问题,并且依赖趋势如下:
- Processor 类通过构造函数注入自动装配 Criteria 类;
- Criteria 类通过构造函数注入自动装配 CacheManager;
- CahceManager 类通过 setter 注入自动装配 RuleSet 类;
- RuleSet 类通过构造函数注入再次自动装配处理器。
The dependencies of some of the beans in the application context form a cycle:
app
┌─────┐
| XXXProcessor defined in file ...
↑ ↓
| XXXCriteria defined in file ...
↑ ↓
| XXXCacheManager
↑ ↓
| XXXRuleSet defined in file ...
└─────┘
虽然我可以努力从 RuleSet 类中删除 Processor 的依赖关系,但我想知道是否有一种方法可以保留当前引用但仍然消除此处介绍的交叉引用问题?我查看了这个论坛,有人建议 @Lazy 注释可能会有所帮助。我尝试将它应用于处理器类或 RuleSet 类(在类级别或方法级别),问题并没有消失。
另一个观察是,上面引用的错误并没有一直出现 - 有时程序运行得很好,是错误随机发生让我烦恼。为什么会这样?
【问题讨论】:
标签: java spring spring-boot spring-annotations cross-reference