https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
가장 먼저 참고할 문서는 공식문서의 마이그레이션이다.
다음 문서도 마이그레이션에 도움이 많이 됐다.
https://techblog.lycorp.co.jp/ko/how-to-migrate-to-spring-boot-3
해야하는 일
- Java 17 이상 사용
- Spring Boot 버전을 3이상으로 수정
- Java EE를 Jakarta EE로 변경
마이그레이션시 마주하는 이슈
javax -> jakarta EE
- 인텔리제이를 사용한다면 마이그레이션 기능을 제공한다.
https://www.jetbrains.com/guide/java/tutorials/migrating-javax-jakarta/use-migration-tool/
Kafka 사용시 ListenableFuture deprecated
- CompletableFuture 를 사용한다. 다행히 공식 문서에 예제가 있었다.
https://docs.spring.io/spring-kafka/reference/kafka/sending-messages.html#:~:text=a%20partial%20batch.-,Examples,-This%20section%20shows
QueryDSL 마이그레이션
- JPA사용중이라면 QueryDSL을 많이 사용할 것 같다. 설정이 바뀌게 됐는데 인프런에 김영한님이 답변한 내용이 있다.
- build 시 Q파일이 생성되는데 git에 같이 올라가지 않도록 gitignore에 확인 필요.
https://www.inflearn.com/questions/779498/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-3-0-querydsl-%EC%84%A4%EC%A0%95-%EA%B4%80%EB%A0%A8
MySQL Custom Function
- DB 종속적인 custom function을 권장하고 싶지 않지만 어쩔 수 없이 사용했다면 이것도 수정이 필요하다.
https://discourse.hibernate.org/t/migration-of-dialect-to-hibernate-6/6956
Spring Security
- 상단의 라인 문서를 참고하면 대부분 해결이 되었다.
- 특이하게 프로젝트에 WebSecurityConfigurerAdapter 구현체가 여러개가 있는 프로젝트가 있다면 security matcher + order를 고려해야한다.
https://www.danvega.dev/blog/multiple-spring-security-configs
Swagger
- 기존의 springfox를 썼다든지 마이그레이션 이후 작동 안한다면 springdoc-openapi를 사용하자
https://springdoc.org
@Where is deprecated
- JPA를 사용중이고 소프트딜리트를 편하게 처리하게 위해 엔티티 위에 붙였다면 @SQLRestriction 를 써보자
https://stackoverflow.com/questions/77178963/is-there-a-replacement-for-the-in-6-3-deprecated-where-and-loader
SnakeCaseStrategy is deprecated
- Jackson 설정이 바뀐 것이 있다. @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) 를 사용하자.
Feign client 이슈
- @ImportAutoConfiguration({FeignAutoConfiguration.class}) 사용
https://stackoverflow.com/questions/74593433/consider-defining-a-bean-of-type-org-springframework-cloud-openfeign-feignconte
좋은 레퍼런스가 많아서 스프링부트 3로 업데이트하는데 큰 이슈는 없었다. 추가로 마이그레이션 과정에서 몇가지 처리해야하는 내용들을 추가했고 더 추가할 예정.
'Spring > Spring Boot' 카테고리의 다른 글
com.querydsl.core.types.Operation com.querydsl.core.types.ExpressionUtils.operation(java.lang.Class, com.querydsl.core.types.Operator, com.google.common.collect.ImmutableList) (0) | 2024.06.20 |
---|---|
Flyway (0) | 2021.06.22 |
다국어 설정 (0) | 2020.08.11 |
Gradle import (0) | 2020.02.25 |