Встречается на собеседованиях • сегодня
Что такое циклическая зависимость в Spring
Циклическая зависимость (circular dependency) возникает, когда два или более бина зависят друг от друга напрямую или через цепочку зависимостей. Например, BeanA требует BeanB, а BeanB требует BeanA.
Spring по умолчанию может разрешать циклические зависимости через конструктор-инъекцию, но это считается плохой практикой. Для инъекции через поля или сеттеры Spring использует промежуточные прокси-объекты.
Пример циклической зависимости:
java
@Service
public class ServiceA {
@Autowired
private ServiceB serviceB;
}
@Service
public class ServiceB {
@Autowired
private ServiceA serviceA;
}Способы решения:
- Рефакторинг - вынести общую логику в третий компонент
- Использовать
@Lazyдля отложенной инициализации - Применять сеттер-инъекцию вместо конструкторной
- Использовать
ApplicationContextAwareдля ручного получения бинов
Лучшая практика - избегать циклических зависимостей через правильное проектирование архитектуры.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы