你可以取代基于构造函数的依赖注射用基于setter方法的依赖注射来解决周期,看到Spring框架参考文档:
循环依赖
如果主要使用构造函数注入,则可能会创建无法解决的循环依赖方案。
例如:A类通过构造函数注入需要B类的实例,而B类通过构造函数注入需要A类的实例。如果您将A类和B类的bean配置为相互注入,则Spring
IoC容器会在运行时检测到此循环引用,并抛出BeanCurrentlyInCreationException。一种可能的解决方案是编辑某些类的源代码,这些类的源代码由设置者而不是构造函数来配置。或者,避免构造函数注入,而仅使用setter注入。换句话说,尽管不建议这样做,但是您可以使用setter注入配置循环依赖关系。
与典型情况(没有循环依赖项)不同,Bean A和Bean
B之间的循环依赖关系迫使其中一个Bean在完全初始化之前被注入另一个Bean(经典的Chicken / egg场景)。



