Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
В чем разница между init и constructor в Kotlin?
constructor создаёт экземпляр класса и принимает параметры, а блок init выполняет инициализацию, общую для всех конструкторов. Блок init всегда выполняется после вызова конструктора, что позволяет настроить объект или проверить параметры.
Почему внедрение зависимостей через конструктор (@RequiredArgsConstructor) предпочтительнее, чем @Autowired в поле? Какие проблемы решает?
Внедрение через конструктор делает зависимости явными, класс — иммутабельным и упрощает тестирование. @Autowired в поле скрывает зависимости, усложняет мокирование и может привести к NullPointerException, если Spring не инициализирует поле.
Почему constructor injection считается предпочтительным способом внедрения зависимостей в Spring?
Constructor injection гарантирует, что объект создаётся сразу в корректном состоянии. Все зависимости обязательны и не могут быть забыты. Такой подход упрощает тестирование и делает объект неизменяемым. Он также позволяет раньше выявлять ошибки конфигурации. Поэтому Spring рекомендует именно этот способ.
Рейтинг:
3
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
6