jokerconf Joker 2018 (19.10.2018)

Spring Boot 2: чего не пишут в release notes

img

Доклад-«грабледайджест» — сборник заметок о том, на какие грабли можно наступить в ходе обновления фреймворка 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 поверх старой версии или с нуля.