Spring trainee

Почему constructor injection лучше field injection?

Ответ

(1) Можно делать поля final — иммутабельность. (2) Видны все зависимости — если их 10, конструктор большой, это сигнал «класс делает слишком много» (SRP). (3) Легко тестировать без Spring — обычный new SomeService(mockA, mockB) без поднятия контекста.

Разбор: Главные плюсы constructor injection: возможность сделать поля final (иммутабельность), явный список всех зависимостей (раздувшийся конструктор сигналит о нарушении SRP) и простое тестирование через обычный new без поднятия Spring. Дистракторы подменяют это второстепенными или неверными доводами: производительность рефлексии тут несущественна, а циклические зависимости конструктор как раз обнаруживает на старте, а не решает их «бесшумно».

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

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