Что важно знать
@RestController,@GetMapping,@PathVariable,@RequestBody.- DTO вместо сущностей в API.
- Фильтры (сервлет) против перехватчиков (Spring MVC).
- Один поток на запрос во встроенном Tomcat — размер пула.
Путь запроса через DispatcherServlet, контроллеры, преобразование JSON, фильтры и перехватчики.
@RestController, @GetMapping, @PathVariable, @RequestBody.Практика. Реализовать CRUD API заказов на Spring MVC с DTO и тестами через MockMvc.
Практика. Добавить фильтр корреляции запросов с trace_id в MDC и перехватчик замера времени.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
@RestController = @Controller + @ResponseBody: возвращаемое значение каждого метода сериализуется в тело ответа (обычно JSON через Jackson), а не трактуется как имя представления.
Полный разбор@RestControllerAdvice с @ExceptionHandler централизует обработку, а ответ — ProblemDetail (стандарт RFC 9457, application/problem+json): type, title, status, detail, instance и свои поля.
Полный разборGET — получить ресурс: безопасный (не меняет состояние) и идемпотентный, параметры в URL, ответ кэшируется. POST — отправить данные на обработку или создать ресурс: не идемпотентный, данные в теле.
Полный разборСервлет — объект, обрабатывающий HTTP-запросы в контейнере (Tomcat). Цикл: init один раз → service (doGet, doPost…) на каждый запрос в разных потоках → destroy при остановке.
Полный разбор401 Unauthorized — личность не установлена: нет токена или он неверный. 403 Forbidden — личность известна, но прав нет. 404 Not Found — ресурс не найден.
Полный разборPRG: после успешного POST сервер отвечает редиректом на GET-страницу результата. Обновление страницы повторит безопасный GET, а не POST — заказ не создастся дважды.
Полный разборDispatcherServlet — единая точка входа (front controller): принимает запрос, через HandlerMapping находит метод контроллера, вызывает его через HandlerAdapter, превращает результат в ответ (HttpMessageConverter или представление), обрабатывает исключения.
Полный разбор404 Not Found — ресурса по этому адресу нет. Это группа 4xx — ошибка на стороне клиента; 5xx — ошибка сервера.
Полный разборРесурсы и HTTP-глаголы, статус-коды как контракт, content negotiation и message converters, идемпотентность и версионирование.
Сервлет и встроенный Tomcat, модель thread-per-request, потокобезопасность контроллеров, Filter против Interceptor и forward/redirect.
Конвейер обработки запроса, @Controller против @RestController, маппинги, извлечение данных и контроль ответа.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.