Почему Spring стал популярным
Что проверяют
Знаете ли вы, от какой боли фреймворк избавил индустрию, или объясняете популярность самой популярностью. Ответ «большое сообщество и много документации» перечисляет следствия, а спрашивают про причину.
Как отвечать
Начните с исторической точки: Spring появился как лёгкая замена тяжёлым серверным компонентам корпоративной Java. Тогда бизнес-класс обязан был наследоваться от классов сервера приложений, описываться дескрипторами и запускаться только внутри контейнера. Spring предложил обычный класс без наследования от фреймворка, а обвязку вынес наружу.
Что конкретно дало взлёт:
- инверсия управления: зависимости приходят через конструктор, объектом владеет контейнер, поэтому в тесте его легко собрать руками;
- аспекты вместо ручного кода: транзакции, безопасность и логирование навешиваются прокси, а не переписываются в каждом методе;
- единообразные абстракции над инфраструктурой: работа с базой, очередями и HTTP выглядит похоже, а разнородные ошибки драйверов сводятся к одной иерархии;
- ненавязчивость: код приложения почти не зависит от классов фреймворка, поэтому тесты и миграции дешевле.
Дальше сыграла экосистема: Data, Security, Batch, Integration, а позже Boot, убравший разросшуюся конфигурацию. Отдельно стоит упомянуть многолетнюю совместимость: проекты живут долго и обновляются без переписывания.
Где спотыкаются
Отвечают «потому что удобно и есть сообщество». Это круговой довод: сообщество выросло уже после того, как фреймворк снял проблему, и интервьюер ждёт описания самой проблемы.
Второе: смешивают Spring Framework и Spring Boot, объясняя популярность стартерами и автоконфигурацией. Boot появился сильно позже, а взлёт случился на контейнере зависимостей и декларативных транзакциях.
Третье: хвалят без единой оговорки. Стоит уметь назвать цену: магия прокси, из-за которой вызов своего же метода проходит мимо транзакции, разбор автоконфигурации при отладке, время старта большого контекста.