Получить доступ

Индивидуальный план развития: Spring

Выберите текущий и целевой грейд — останутся темы, которые нужно освоить, с проверяемыми критериями, практическими заданиями и оценкой трудоёмкости. План можно скопировать в документ компании, скачать таблицей или распечатать.

1 этап Контейнер и бины

IoC, DI и бины Основа

Junior
  • Объясняет IoC и внедрение через конструктор и почему оно предпочтительнее
  • Объявляет бины стереотипами и методами @Bean
  • Описывает жизненный цикл бина и scopes singleton и prototype

Практика. Сделать приложение из трёх слоёв (контроллер, сервис, репозиторий) с внедрением через конструктор и тестом сервиса.

Middle
  • Решает конфликты при нескольких кандидатах — @Primary, @Qualifier
  • Объясняет, почему prototype внутри singleton не обновляется и как это исправить

Практика. Разобрать на примере проблему prototype-бина внутри singleton и исправить через ObjectProvider.

Конфигурация и контекст Основа

Junior
  • Настраивает приложение через application.yml, профили и переменные окружения

Практика. Вынести все настройки сервиса в application.yml с профилями dev и prod.

Middle
  • Связывает настройки в типизированные @ConfigurationProperties с валидацией
  • Использует события контекста и условные бины

Практика. Описать настройки внешней интеграции классом @ConfigurationProperties с валидацией и тестом.

AOP и прокси Основа

Middle
  • Объясняет, как Spring создаёт прокси и чем JDK-прокси отличается от CGLIB
  • Объясняет, почему самовызов обходит @Transactional и @Cacheable
  • Пишет аспект для сквозной логики (замер времени, аудит)

Практика. Воспроизвести самовызов метода с @Transactional, показать, что транзакции нет, и исправить.

2 этап Spring Boot

Spring Boot Основа

Junior
  • Создаёт приложение на Spring Boot со стартерами и запускает его
  • Подключает Actuator и проверяет health и метрики

Практика. Создать сервис на Spring Boot с REST-эндпоинтом, Actuator и сборкой в исполняемый jar.

Middle
  • Объясняет, как работает автоконфигурация и как её переопределить
  • Пишет собственный стартер с условной автоконфигурацией

Практика. Вынести общую интеграцию в собственный стартер с автоконфигурацией и тестами условий.

3 этап Веб-слой

Spring MVC и REST-контроллеры Основа

Junior
  • Пишет REST-контроллеры с правильными методами, кодами и DTO

Практика. Реализовать CRUD API заказов на Spring MVC с DTO и тестами через MockMvc.

Middle
  • Описывает путь запроса через фильтры, DispatcherServlet и перехватчики
  • Настраивает встроенный сервер и пул потоков под нагрузку

Практика. Добавить фильтр корреляции запросов с trace_id в MDC и перехватчик замера времени.

Валидация и обработка ошибок Основа

Junior
  • Валидирует входные данные аннотациями Bean Validation
  • Обрабатывает ошибки в @ControllerAdvice и возвращает понятный ответ

Практика. Добавить валидацию создания заказа и единую обработку ошибок с тестами.

Middle
  • Возвращает ошибки в формате Problem Details и пишет свои валидаторы

Практика. Перевести ответы об ошибках сервиса на ProblemDetail и написать валидатор согласованности полей.

4 этап Данные и транзакции

Spring Data JPA Основа

Junior
  • Создаёт сущности и репозитории, пишет запросы методами и @Query

Практика. Сделать слой данных для заказов и позиций на Spring Data JPA с тестами на Testcontainers.

Middle
  • Устраняет N+1 через fetch join и entity graph и видит SQL в логах
  • Использует проекции и пагинацию для больших выборок
  • Объясняет persistence context и dirty checking

Практика. Найти N+1 и лишние запросы в учебном проекте через логи Hibernate и сократить число запросов на странице до константы.

Транзакции в Spring Основа

Junior
  • Использует @Transactional на сервисном слое для связанных изменений

Практика. Сделать оформление заказа с резервом товара в одной транзакции и тестом отката.

Middle
  • Объясняет propagation REQUIRED и REQUIRES_NEW и откат при checked-исключениях
  • Находит причины, по которым транзакция не работает — самовызов, private, не тот менеджер
  • Не держит транзакцию во время внешних вызовов

Практика. Записать журнал аудита в отдельной транзакции REQUIRES_NEW так, чтобы он сохранялся при откате основной.

5 этап Spring Security

Spring Security Основа

Middle
  • Настраивает SecurityFilterChain для REST API с JWT
  • Подключает вход через OAuth 2.0 и OIDC и сервер ресурсов
  • Защищает методы через @PreAuthorize с проверкой владельца ресурса

Практика. Защитить API заказов JWT-токенами внешнего провайдера, разграничить роли и проверку владельца.

Senior
  • Объясняет устройство цепочки фильтров и пишет свой фильтр аутентификации
  • Проектирует безопасность для нескольких сервисов и клиентов

Практика. Реализовать аутентификацию по API-ключу для партнёров отдельной цепочкой фильтров рядом с JWT для пользователей.

6 этап Тестирование Spring Boot

Тестирование Spring Boot Основа

Junior
  • Пишет тесты контроллеров через @WebMvcTest и MockMvc

Практика. Покрыть контроллер заказов тестами MockMvc на успешные ответы и ошибки валидации.

Middle
  • Пишет интеграционные тесты на Testcontainers с переиспользованием контейнеров
  • Подменяет бины через @MockitoBean и ускоряет тесты кэшированием контекста

Практика. Перевести интеграционные тесты с H2 на Testcontainers PostgreSQL и сократить время прогона за счёт общего контекста.

7 этап Сообщения в Spring

Сообщения в Spring Основа

Middle
  • Пишет продюсер и потребитель Kafka на Spring Kafka с обработкой ошибок и DLT
  • Настраивает подтверждения и повторы в Spring AMQP
  • Объясняет, когда уместна абстракция Spring Cloud Stream

Практика. Реализовать обработку событий заказа на Spring Kafka с повторами, DLT и интеграционным тестом в Testcontainers.

8 этап Микросервисы на Spring

Микросервисы на Spring Основа

Middle
  • Добавляет таймауты, повторы и circuit breaker через Resilience4j
  • Подключает трассировку Micrometer Tracing и метрики

Практика. Обернуть вызов внешнего сервиса в Resilience4j с circuit breaker и проверить поведение в тесте с медленной заглушкой.

Senior
  • Выбирает компоненты Spring Cloud против средств платформы (Kubernetes, service mesh) и обосновывает

Практика. Сравнить для своего проекта Spring Cloud Gateway и ingress-контроллер Kubernetes и описать выбор.

9 этап Reactive и WebFlux

Reactive и WebFlux Полезно знать

Middle
  • Объясняет Mono и Flux, backpressure и почему блокирующий вызов ломает реактивный сервис
  • Выбирает между WebFlux и MVC с виртуальными потоками

Практика. Реализовать агрегирующий эндпоинт на WebFlux, опрашивающий три сервиса параллельно, и сравнить с MVC на виртуальных потоках.

10 этап Spring Batch и Integration

Spring Batch и Integration Полезно знать

Middle
  • Строит пакетную обработку на Spring Batch с чанками, повторами и перезапуском

Практика. Реализовать импорт большого CSV в базу на Spring Batch с пропуском ошибочных строк и перезапуском с места падения.

← Карта «Spring»

Закрытая бета

План есть — пора на собеседование

sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем