Как в Spring рекомендуется внедрять зависимости?

В Spring рекомендуется внедрять зависимости через конструкторы (Constructor Injection). Это обеспечивает:

Короткий ответ

Что ответить на собеседовании

В Spring рекомендуется внедрять зависимости через конструкторы (Constructor Injection). Это обеспечивает:

Подробный разбор

Ответ с пояснениями

В Spring рекомендуется внедрять зависимости через конструкторы (Constructor Injection). Это обеспечивает:

  • Иммутабельность зависимостей после создания объекта.
  • Упрощение тестирования, так как зависимости можно передавать явно.
  • Явное указание обязательных зависимостей.

Пример внедрения через конструктор:

@Component
public class TicketService {
    private final PaymentService paymentService;

    public TicketService(PaymentService paymentService) {
        this.paymentService = paymentService;
    }

    // методы сервиса
}

Также можно использовать аннотацию @Autowired над конструктором, но начиная с Spring 4.3, если у класса один конструктор, аннотация не обязательна.

Внедрение через поля (@Autowired на полях) или сеттеры менее предпочтительно, так как затрудняет тестирование и нарушает принцип инверсии зависимостей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее