Встречается на собеседованиях • сегодня

Какие знаешь способы получения зацикленности при внедрении зависимостей в Spring

В Spring есть несколько способов получить зацикленность зависимостей (circular dependency):

  1. Через конструкторы (самый проблемный случай):
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; }
}
  1. Через сеттеры/полевой инжект:
java
@Component
class C {
    @Autowired
    private D d;
}

@Component
class D {
    @Autowired
    private C c;
}

Spring может разрешить циклические зависимости через proxy-объекты, но это не всегда хорошо:

  • Для конструкторного инжекта вообще не сработает
  • Может привести к неожиданному поведению
  • Ухудшает читаемость кода

Лучшие практики:

  1. Избегать циклических зависимостей через рефакторинг
  2. Использовать @Lazy для ленивой инициализации
  3. Применять интерфейсы и паттерн "Setter Injection"
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы