Это первая лекция седьмой сессии части 1 курса [Modern Backend] — «Рефакторинг распространения контекста (1)».
В этой лекции мы проанализируем целевые участки и выполним структурный рефакторинг, чтобы перевести существующую логику распространения контекста на основе ThreadLocal в проекте доски объявлений на архитектуру на основе ScopedValue из Java 25.
📌 Основные рассматриваемые темы:
-
Обзор четырёх файлов, выбранных для рефакторинга (RequestContext, RequestContextFilter, PostCreationCoordinator и т. д.)
-
Пятиэтапная последовательность рефакторинга и подход, основанный на компиляторных ошибках
-
Анализ существующей структуры кода на основе ThreadLocal и выявление четырёх точек ручного управления, зависевших от соглашений, соблюдаемых разработчиками (set/clear)
-
Преобразование внутренней реализации держателя RequestContext для использования ScopedValue и расширение его API-методов
runWith,callWith,getOrSystemи т. д.) -
Замена точки входа веб-запроса (Servlet Filter) структурой привязки области действия Scoped Value
-
Внутри Servlet Filter,
runWith/callWithПринципы обработки проверяемых исключений и ошибок компиляции, связанных с выводом типов в Java, которые могут возникнуть при использовании
Выйдите за рамки структурных ограничений существующего ThreadLocal и изучите процесс рефакторинга архитектуры Modern Java для безопасного распространения контекста.