Здравствуй, читатель Хабра!
До выхода 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!
Комментарии (2)
 - gkislin Автор23.08.2022 11:41- Если пара ссылок в заголовке, если нужна информация. Вообще это не про Spring Boot 3.0 а про переезд. 
 
           
 
Nireko
Мало :(