我们正在做一些重构,我们在这里遇到了麻烦。
有两个服务类AService和BService做不同的工作,它们具有循环依赖关系。
先前它们位于不同的库中,因此不存在循环依赖关系。但是现在,在重构之后,我们已经将它们移至单个库中并移至单个包中。
AService的工作是将一些数据持久保存在NoSQL数据库中,以用于单独的用例。
BService作业与AService作业完全不同。
AService需要BService来获取一些数据。
BService需要AService将一些数据写入NoSQL数据库并进行回读。
如何解决使循环依赖问题相互依赖的问题。是否有针对此类问题的设计模式?
class AService {
@Autowired
private BService bService;
}
class BService {
@Autowired
private AService aService;
}
最佳答案
真正的问题是,为什么您的构想使A和B相互依赖?
A和B可能代表相同的概念,并且可以合并。
也有可能您的服务A或B的一部分应提取到新的服务C中。
在后一种情况下,您需要知道哪种方法取决于哪种服务,以及哪种方法可以在新服务中提取。没有上下文和方法列表,很难提出解决方案。
对于间接递归方法,您可能还必须削减一些方法。
旁注:不要试图找到一种解决方法以使其与循环依赖项一起使用,它显示了概念问题,您必须进行重构。