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

Что делать при закольцованности от взаимной инъекции классов

При закольцованности из-за взаимной инъекции классов можно использовать несколько подходов:

  1. Lazy инициализация через @Lazy (Spring):
java
@Service
public class A {
    @Lazy @Autowired
    private B b;
}

@Service
public class B {
    @Autowired
    private A a;
}
  1. Setter/Field инъекция вместо конструкторной:
java
@Component
public class A {
    private B b;
    
    @Autowired
    public void setB(B b) {
        this.b = b;
    }
}
  1. Интерфейсы - вынести зависимости в интерфейсы.

  2. Refactoring - пересмотреть архитектуру, возможно, стоит объединить функционал или использовать паттерн Mediator.

Важно: циклические зависимости часто указывают на проблемы проектирования. Лучшее решение - пересмотреть архитектуру приложения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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