Circular dependency: A cần B và B cần A → Spring không biết tạo cái nào trước. Spring Boot 2.6+ throw ngay lúc startup: The dependencies of some of the beans form a cycle: a → b → a.
Fix (ưu tiên theo thứ tự):
1. Tái cấu trúc — trích logic chung ra class C, A và B đều phụ thuộc C. Giải pháp đúng về kiến trúc — cycle thường là dấu hiệu chia trách nhiệm sai.
2. @Lazy tại điểm inject (A(@Lazy B b)) — Spring inject proxy trước, tạo bean thật khi dùng lần đầu.
3. Setter injection thay constructor — Spring init bean trước, inject sau.
Không nên: spring.main.allow-circular-references=true — giấu lỗi nhưng giữ nguyên vấn đề kiến trúc.