Java 中的循環依賴是指兩個類別或兩個模組相互依賴,從而形成循環。
假設我們有兩個相互依賴的 bean A 和 B,如下例所示:
@Component public class A{ private final B b; public A(B b){ this.b = b; } }
@Component public class B{ private final A a; public B(A a){ this.a = a; } }
運行專案時,會出現以下錯誤:
Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
因此,為了解決這種循環依賴,我們有四種解決方案:
在我們的例子中,我們將使用第四個解決方案,即使用註釋@lazy,如下例所示:
@Component public class A{ private final B b; public A(@Lazy B b){ this.b = b; } }
@Component public class B{ private final A a; public B(A a){ this.a = a; } }
我們現在已經脫離了這個循環:)
以上是Spring Boot中的循環依賴的詳細內容。更多資訊請關注PHP中文網其他相關文章!