Une dépendance cyclique intervient en Java lorsque deux class ou deux modules dépendent l'un de l'autre, formant ainsi un cycle.
Supposons que nous ayons deux beans A et B qui dépendent l'un de l'autre comme le montre l'exemple ci-dessous :
@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; } }
Lors de l'exécution de votre projet, vous aurez l'erreur suivante :
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.
Ainsi, pour résoudre cette dépendance cyclique, nous avons quatre solutions :
Dans notre cas, nous utiliserons la quatrième solution qui est juste d'utiliser l'annotation @lazy comme le montre l'exemple ci-dessous :
@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; } }
Et voilà, nous sommes désormais sorti de ce cycle :)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!