sping-迴圈依賴注入
阿新 • • 發佈:2020-12-29
技術標籤:java專案bug
現象:系統中存在Aservice呼叫Bservice,Bservice呼叫Cservice,Cservice呼叫Bservice。系統中service之間存在相互呼叫,就導致service迴圈依賴注入。
迴圈依賴注入是什麼:迴圈依賴其實就是迴圈引用,也就是兩個或則兩個以上的bean互相持有對方,最終形成閉環。比如A依賴於B,B依賴於C,C又依賴於A。如下圖:
注意,這裡不是函式的迴圈呼叫,是物件的相互依賴關係。迴圈呼叫其實就是一個死迴圈,除非有終結條件。
解決辦法:採用@Lazy懶載入,在使用的時候再去例項化bean,如下所示:
@Autowired @Lazy private CfOrderToBatchService cfOrderToBatchService;
PS:解決辦法有很多種,目前我們專案是採用這種方式完美解決迴圈依賴注入,僅供大家參考。
參考網址: https://blog.csdn.net/u010853261/article/details/77940767