[英]Maven cyclic dependency issue for Spring project
我有一個包含約50個組件的Spring項目。 不幸的是,其中一個類在Maven中引起了循環依賴的問題。 這是故事:
我在Spring項目中添加了一個新組件。 現在將其稱為Apple
。 它有一個@Bean
稱為AppleWatch
。 其中一種實現方式是Apple
依賴於另一個組件: Foxconn
,因此AppleWatch
可以在Bean中調用一個名為CheapLabor
。
同時, CheapLabor
依賴於另一個組件: Corning
。 它需要GorillaGlass
能夠加班。
直到Corning
意識到自己想通過根據蘋果公司的市場需求制作相同數量的眼鏡來省錢的時候,情況Corning
不錯。 因此,它嘗試在AppleWatch
調用方法getCurrentMarketOrders()
。 為此,我將bean AppleWatch
自動AppleWatch
到GorillaGlass.java
類中。 然后...
繁榮! 循環依賴錯誤!
那么,關於我應該為Apple
和/或Corning
做什么的任何建議?
如@unigeek所述,在這種情況下,interfaces是您的朋友。 在構造Maven項目的上下文中,這意味着將接口分成單獨的API Maven模塊。
不久Corning
將意識到它也向Samsung
提供了GorrilaGlass
,而不僅是Apple
。 因此,現在需要調用getCurrentMarketOrders()
不僅對AppleWatch
,也Gear2
。 該解決方案在此時刻變為更清晰:引進與API模塊Marketable
接口,這兩個Apple
和Samsung
依賴,同時允許AppleWatch
和Gear2
實現Marketable
。 然后, Corning
僅依賴這個新的API模塊,而沒有直接依賴於Apple
或Samsung
,而后者都為該接口提供了自己的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.