Spring项目的Maven循环依赖问题



我有一个Spring项目,它包含大约50个组件。不幸的是,其中一个类在Maven中引发了循环依赖性问题。故事是这样的:

我在Spring项目中添加了一个新组件。现在我们称之为Apple。它有一个名为AppleWatch@Bean。其中一个实现是Apple依赖于另一个组件:Foxconn,因此AppleWatch可以调用Bean中名为CheapLabor的方法。

同时,CheapLabor依赖于另一个组件:Corning。它需要GorillaGlass才能加班。

事情一直很好,直到Corning意识到它想根据苹果的市场需求生产同样数量的眼镜来省钱。因此,它尝试在AppleWatch中调用一个方法getCurrentMarketOrders()。为此,我将beanAppleWatch自动连接到类GorillaGlass.java中。然后

轰!循环依赖错误!

那么,关于我应该为Apple和/或Corning做些什么,有什么建议吗?

正如@unigeek所提到的,在这种情况下,接口是您的朋友。在构建maven项目的上下文中,这意味着将接口分离为单独的API maven模块。

很快,Corning将意识到它还向Samsung提供GorrilaGlass,而不仅仅是Apple。因此,现在它不仅需要在AppleWatch上调用getCurrentMarketOrders(),而且还需要调用Gear2。在这一点上,解决方案变得更加清晰:引入一个具有Marketable接口的API模块,AppleSamsung都依赖该接口,允许AppleWatchGear2实现Marketable。然后Corning只依赖于这个新的API模块,而不直接依赖于AppleSamsung,而后者都为这个接口提供自己的实现。

相关内容

  • 没有找到相关文章

最新更新