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

В чем разница между способами внедрения зависимостей

В Java есть три основных способа внедрения зависимостей:

  1. Constructor Injection (рекомендуемый способ)
java
public class Service {
    private final Dependency dependency;
    
    public Service(Dependency dependency) {
        this.dependency = dependency;
    }
}
  • Гарантирует неизменяемость зависимостей
  • Позволяет сделать зависимости final
  • Явно показывает обязательные зависимости
  1. Setter Injection
java
public class Service {
    private Dependency dependency;
    
    public void setDependency(Dependency dependency) {
        this.dependency = dependency;
    }
}
  • Позволяет изменять зависимости после создания
  • Подходит для опциональных зависимостей
  1. Field Injection (не рекомендуется)
java
public class Service {
    @Autowired
    private Dependency dependency;
}
  • Нарушает инкапсуляцию
  • Затрудняет тестирование
  • Скрывает зависимости

Лучшая практика - использовать конструкторное внедрение для обязательных зависимостей и сеттеры для опциональных. Field injection следует избегать.

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

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

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

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