Spring Boot 2: чего не пишут в release notes
Доклад-«грабледайджест» — сборник заметок о том, на какие грабли можно наступить в ходе обновления фреймворка Spring Boot до версии 2.*, а также о способах их устранения или обхода.
Комментарий Программного комитета:
Очень актуально и может спасти слушателям дни времени и пряди седых волос.
Обновляя у себя какой-либо фреймворк, ты, конечно, всегда внимательно читаешь его release notes и migration guide;) Но даже если это правда, тебя может поджидать множество сюрпризов, особенно если это мажорное обновление такого базового фреймворка, как Spring Boot. Помимо себя, он привносит обновления для своего BOM, а это ~150 транзитивных зависимостей на все случаи жизни — такой upgrade не может пройти без накладок…
В этом докладе («грабледайджесте») Владимир расскажет о своем опыте перевода микросервисного приложения на Spring Boot 2, проведет по многим собранным в ходе этого граблям и покажет для каждого случая решение или обходной путь. В частности, он расскажет:
-
как поддержка реактивного стека ломает обратную совместимость на уровне исходного кода;
-
почему переписанный с нуля Gradle-плагин может портить сборку составного проекта и содержимое выходного JAR;
-
как новые правила relax binding параметров могут помешать запуску приложения;
-
как сломать старт микросервиса, ненароком поссорив мониторинг с пулом коннектов;
-
причем тут движок Micrometer, если отвалились задания по расписанию;
-
как замешан новый режим проксирования в исчезновении некоторых MBean из JMX;
-
как рефакторинг настроек WebMVC может своротить определение Content-Type при отдаче файлов;
-
какие новшества Mockito не дают тестам скомпилироваться и проваливают надежно проходившие тесты;
-
а также о ряде других мелких, но неприятных «спецэффектов».
Доклад ориентирован на разработчиков, планирующих или уже внедряющих Spring Boot 2 поверх старой версии или с нуля.