Зачем нужен Spring Framework и для чего он используется
Что проверяют
Понимаете ли вы, что ядро это контейнер и инверсия управления, а не «набор аннотаций для веба».
Как отвечать
Spring это каркас, который берёт на себя создание объектов и связывание их между собой. Вы описываете зависимости, контейнер собирает граф и отдаёт готовые бины. Это инверсия управления: не ваш код создаёт зависимости, а контейнер приносит их.
Что даёт ядро:
- контейнер и внедрение зависимостей: слабая связанность, подмена реализации в тестах, единое место конфигурации;
- аспектное программирование: сквозные задачи (транзакции, кэш, безопасность, логирование) описываются один раз и применяются через прокси, а не копируются по методам;
- абстракции над инфраструктурой: единая работа с транзакциями независимо от JPA или JDBC, единая модель исключений доступа к данным.
Дальше идут модули: Spring MVC и WebFlux для HTTP, Data для доступа к данным, Security для аутентификации и прав, Kafka и AMQP для очередей, Batch для пакетной обработки. Spring Boot поверх всего этого убирает ручную настройку и даёт встроенный сервер.
Зачем это на практике: типовые задачи корпоративного приложения решены и согласованы между собой, а команда пишет предметную логику, а не обвязку. Цена это магия, которую надо понимать: прокси, порядок создания бинов, автоконфигурация.
Где спотыкаются
Сводят Spring к аннотациям и не могут объяснить, что такое контейнер.
Путают Spring и Spring Boot.
Не знают, что транзакции и кэш работают через прокси, и потом ловят самовызов.
Не могут назвать ни одной альтернативы, хотя есть Quarkus, Micronaut и Jakarta EE.