Eine zyklische Abhängigkeit liegt in Java vor, wenn zwei Klassen oder zwei Module voneinander abhängen und so einen Zyklus bilden.
Angenommen, wir haben zwei Bohnen A und B, die voneinander abhängen, wie im folgenden Beispiel gezeigt:
@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; } }
Beim Ausführen Ihres Projekts erhalten Sie die folgende Fehlermeldung:
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.
Um diese zyklische Abhängigkeit aufzulösen, haben wir vier Lösungen:
In unserem Fall verwenden wir die vierte Lösung, die lediglich darin besteht, die Annotation @lazy zu verwenden, wie im folgenden Beispiel gezeigt:
@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; } }
Und da sind wir nun, wir sind aus diesem Kreislauf heraus :)
Das obige ist der detaillierte Inhalt vonZyklische Abhängigkeiten im Spring Boot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!