Как стать автором
Обновить

Spring Boot 3.0 — готовимся заранее

Время на прочтение2 мин
Количество просмотров18K

Здравствуй, читатель Хабра!

До выхода Spring Boot 3 осталось совсем немного - 3 месяца. Уже появляются статьи -
What’s New, It's time to get ready. Недавно JetBrains выпустила IDEA с поддержка Spring 6 и Spring Boot 3. Самое время потренироваться заранее в миграции. В разработке нового учебного курса я попробовал перевести свой открытый учебный проект Spring Boot 2.x + HATEOAS на Spring Boot 3, шаги и код проекта ниже.

Spring Boot 3.0 - готовимся заранее
Spring Boot 3.0 - готовимся заранее

За основу взят код открытого проекта Spring Boot 2.x + HATEOAS (код на GitHub в ветке patched). Функционал простой - основа любого современного REST веб-приложения: аутентификация и авторизация на основе ролей, регистрация пользователя в приложении, управление своим профилем и администрирование пользователей.

Первым комитом (ветка patched) перевел проект с Maven на Gradle - давно хотел, появился повод:) Примечание - против Maven ничего не имею, для сравнения Gradle и Maven есть отдельные статьи и дискуссии.

Далее будет разбор второго шага - кода миграции: сommit details
Для разбора проще всего вычекать к себе проект с этой ревизией:

git clone --branch patched https://github.com/JavaOPs/cloudjava
cd cloudjava
git checkout 2d74f6158b8380587a3360e911e3a6ff42c49642

  • Обновляем версию Spring и добавляем snapshot репозитории в build.gradle

  • Меняем зависимость springdoc-openapi на springdoc-openapi-starter-webmvc-ui и пакет для GroupedOpenApi: смотри SpringDoc OpenAPI 2.x migration guide

  • Добавляем snapshot репозитории в settings.gradle

  • В коде всего проекта меняем javax.validation  и  javax.servlet  на  jakarta (можно контекстной заменой). Здравствуй JPA 3, Hibernate 6, Hibernate Validator 7 и Tomcat 10 !

  • Обновляем зависимость jackson-datatype-hibernate5 на jackson-datatype-hibernate5-jakarta. В AppConfig также делаем замену  Hibernate5Module  на  Hibernate5JakartaModule

  • В GlobalExceptionHandler меняем HttpStatus на HttpStatusCode. Появилась новая иерархия статусов возврата без требования быть enum. Однако для getReasonPhrase() теперь приходится делать instanceof HttpStatus

  • В AdminUserControllerTest не идут тесты на запросы со слешем в конце. Сделал отдельную переменную REST_URL_SLASH

Проект совсем небольшой, поэтому, если у вас встретятся неописанные здесь шаги, пишите в комментариях. Также буду рад любым замечаниям по коду.

И - желаю успехов с обновлением на Spring Boot 3!

Теги:
Хабы:
Всего голосов 19: ↑6 и ↓13-4
Комментарии5

Публикации

Истории

Работа

Java разработчик
338 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн