Здравствуй, читатель Хабра!
До выхода 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 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!
ссылка на оригинал статьи https://habr.com/ru/post/683936/
Добавить комментарий