Встречается на собеседованиях • сегодня
Какие знаешь способы получения зацикленности при внедрении зависимостей в Spring
В Spring есть несколько способов получить зацикленность зависимостей (circular dependency):
- Через конструкторы (самый проблемный случай):
java
@Component
class A {
private final B b;
public A(B b) { this.b = b; }
}
@Component
class B {
private final A a;
public B(A a) { this.a = a; }
}- Через сеттеры/полевой инжект:
java
@Component
class C {
@Autowired
private D d;
}
@Component
class D {
@Autowired
private C c;
}Spring может разрешить циклические зависимости через proxy-объекты, но это не всегда хорошо:
- Для конструкторного инжекта вообще не сработает
- Может привести к неожиданному поведению
- Ухудшает читаемость кода
Лучшие практики:
- Избегать циклических зависимостей через рефакторинг
- Использовать @Lazy для ленивой инициализации
- Применять интерфейсы и паттерн "Setter Injection"

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