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

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

В Java предпочтительнее использовать внедрение через конструктор (Constructor Injection), так как:

  1. Делает зависимости явными и обязательными
  2. Позволяет сделать поля final (неизменяемыми)
  3. Упрощает тестирование (можно передавать mock-объекты)
  4. Соответствует принципу SOLID (D - Dependency Inversion)

Пример:

java
public class OrderService {
    private final PaymentGateway paymentGateway;
    private final InventoryService inventoryService;

    public OrderService(PaymentGateway paymentGateway, 
                       InventoryService inventoryService) {
        this.paymentGateway = paymentGateway;
        this.inventoryService = inventoryService;
    }
}

Setter Injection и Field Injection имеют недостатки:

  • Setter: зависимости могут быть не установлены
  • Field: сложнее тестировать, нарушает инкапсуляцию

Spring с версии 4.3+ автоматически внедряет зависимости через конструктор, если он один.

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

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

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

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