我正在与多模块Maven项目一起工作,在那里我面临着driver(module A) and actors(module B)
Actors模块有一个共同的actor系统创建,应该是 项目中所有演员的共同点
驱动程序使用 ActorSystem 为某些客户端API调用创建 ActorRef ,因此存在Module B on Module A
的相关性。
另外Actor A
调用驱动程序类的方法,该方法需要Module A on Module B.
因此,结果证明是模块A需要模块B的循环依赖关系 反之亦然
我一直在寻找可以消除模块A对B的依赖的解决方案,因为我希望模块B不依赖于任何模块。 如果可以通过任何方式间接访问驱动程序类中的方法,这可能有助于消除循环依赖的原因。
答案 0 :(得分:0)
问题出在您的设计上。如果您可以重新设计软件,以便将要在两个模块(A和B)中使用的通用对象放在一个不同的模块中,那就更好了,例如COMMON MODULE。然后,您要做的就是将该通用模块依赖项添加到模块A和B中,以便可以在两个模块中使用通用功能。 对于您提出的问题,“是否可以通过任何方式间接访问驱动程序类中的方法,从而有助于消除循环依赖的原因。”不,您不能直接做到这一点,如果您正在考虑做这样的事情,那应该就像服务通信一样。然后,它将再次添加我们不需要的不必要的网络跃点。因此,最好的办法是重新设计软件并消除循环依赖性。