Pergantungan kitaran berlaku di Java apabila dua kelas atau dua modul bergantung antara satu sama lain, sekali gus membentuk kitaran.
Andaikan kita mempunyai dua biji A dan B yang bergantung antara satu sama lain seperti yang ditunjukkan dalam contoh di bawah:
@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; } }
Apabila menjalankan projek anda, anda akan mendapat ralat berikut:
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.
Jadi, untuk menyelesaikan pergantungan kitaran ini, kami mempunyai empat penyelesaian:
Dalam kes kami, kami akan menggunakan penyelesaian keempat iaitu hanya menggunakan anotasi @lazy seperti yang ditunjukkan dalam contoh di bawah:
@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; } }
Dan di sana kita berada, kita kini keluar dari kitaran ini :)
Atas ialah kandungan terperinci Kebergantungan kitaran dalam but musim bunga. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!