Spring middle

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

Ответ

Constructor injection: immutable-поля (final), явные обязательные зависимости, удобство в тестах без mock-контейнера, нет циклических зависимостей.

Разбор: Constructor injection — это immutable-поля через final, явный контракт обязательных зависимостей, простое тестирование new-ом и ранний отказ при циклах. Setter не даёт final и не защищает от циклов (он их как раз разрешает); field injection не позволяет final и требует рефлексии в тестах; ApplicationContextAware/getBean — это service locator, скрывающий зависимости и подрывающий тестируемость.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться