[Spring Boot] 2.7.1 → 3.2.5 마이그레이션

손은실·2024년 5월 14일
1

Spring Boot

목록 보기
11/13
post-thumbnail
post-custom-banner

22년도에 사용했던 2.7.1은 23년 11월에 지원이 종료돼 최신 버전으로 업데이트를 한 과정을 정리했다.


들어가기 전에

Spring Boot 2.7.1에서 3.2.5로 업그레이드 하는 과정이며, 빌드 도구는 Gradle, 코드는 Java (jdk11) 이다.


Spring Boot 마이그레이션

준비

Spring Boot 3.0 준비를 위한 공식 문서에서 만약 2.5 이하 버전에서 업그레이드 하는 경우에는 3.0으로 바로 업데이트하는 것보다, 이전 버전들을 순차적으로 업데이트 하는 것이 좋다고 한다.

If you’re upgrading from Spring Boot 2.5 or earlier, we don’t recommend skipping releases. It’s often easier to upgrade in steps (e.g. 2.5 → 2.6 → 2.7) rather than trying to upgrade directly from 2.5 → 2.7.

나는 2.7.1 에서 중간 버전들 건너뛰고 3.2.5로 변경했는데, 하고 나니 왜 순차적으로 변경하라는 건지 알 것 같다.
중간 버전에서 조금씩 변경된 것들 때문에 변경의 이유를 찾는데 좀 걸렸다. (역시 어른들 말은 틀린 게 없어)


버전 변경 전에 마이그레이션 공식 문서를 한 번 읽어보면 나에게 필요한 변경 부분들을 쉽게 알 수 있다.
나는 3.2.5 버전으로 바로 업그레이드해서 Spring Boot 3.2 릴리스 노트도 추가로 봤더니 변경 사항과 이유를 찾는데 도움이 되었다.



JDK 17

Spring Boot 3.0은 Spring Framework 6.0을 기반으로 하며 최소 Java 17 이상이 필요하다.
Oracle에서 설치해도 되고, IntelliJ에서 바로 설치할 수도 있다. (이건 몰랐다)

  1. java, javac 버전 확인하기
  2. build.gradle 에서 버전 수정하기


Spring Boot 3.2.5

24년 5월 13일 기준 최신 버전인 3.2.5로 업그레이드했다.
Spring Boot 버전 확인하러 가기

  • build.gradle

io.spring.dependency-management 플러그인도 함께 업그레이드했다.
io.spring.dependency-management 플러그인의 최신 버전은 Gradle 공식 사이트에서 확인할 수 있다.



Gradle 7.5 이상

  • 변경 전 빌드 실패 로그

gradle / wrapper / gradle-wapper.properties 에서 distributionUrl의 속성 값을 최신 버전으로 변경한다.



MySQL Connector

mysql-connector-java 의존성을 찾지 못했다.

레거시 형태를 없애기 위해서 MySQL Connector/J의 좌표가 변경되었다고 한다.
그래서com.mysql:mysql-connector-j 으로 변경한다.

Spring Boot 2.7.1을 사용할 때는 MySQL 커넥터의 버전을 기재하지 않아도 빌드를 성공했는데, 3.2.5 버전에서는 왜 빌드를 실패하는 걸까?

Spring Boot 2.7.8 부터 의존성 관리에서 mysql-connector-java를 관리하지 않아 의존성을 찾지 못했던 것이다. Spring Boot 2.7.8 부터는 com.mysql:mysql-connector-j 을 사용해야 한다.

아래처럼 MySQL 커넥터에 최신 버전을 기재하는 방법도 있으나, 이건 비추천이다.

버전을 기재하는 건 개발자가 버전 관리를 안 해도 된다는 Spring Boot의 장점을 이용하지 못한다고 생각한다.



Jakarta EE 패키지

코드 레벨에서의 큰 변화는 javax 패키지가 jakarta 패키지로 변경된 것이다.

Java의 표준 사양을 관리하는 주체가 JCP (Java Community Process) 에서 Eclipse Foundation으로 바뀌며 Oracle과 라이센스 이슈 때문에 변경되었다고 한다.

그래서 코드 내 import문에서 javax 패키지를 jakarta 패키지로 변경해야 한다.
Spring Boot 3.0 마이그레이션 가이드에서 3가지의 변경 방법을 알려준다.
나는 그 중에서 IntelliJ IDEA에서 자동으로 변경하는 방법를 사용했다.

  • 변경 전 빌드 결과

1. 패키지 및 클래스 마이그레이션

Shift 키를 2번 빠르게 누르면 전체 검색창이 뜬다.
어떤 것을, 무슨 버전으로 변경할 지에 대한 선택 옵션이 나오고, 그 중에서 Java EE to Jakarta EE를 선택

2. 마이그레이션 범위 지정

3. 리팩터링 수행
변경 될 클래스들을 미리 볼 수 있다.

아래의 리팩터링 수행을 클릭하면 javax 패키지를 import 했던 부분들이 jakarta 패키지로 한 번에 변경된다.

4. 변경 완료

5. 변경되지 않은 부분이 없는지 확인
전체 검색 창에서 javax를 입력해 사용되고 있는 곳이 있지 않은지 한 번 더 확인한다.

사용되고 있는 곳이 없는 것을 알 수 있다.



마치며

여러 사람들이 자신의 마이그레이션 과정들을 기록한 글들이 많았지만, 모두 초기 세팅이 다르니 변경이 필요한 부분도 달라서 이번엔 공식 문서를 많이 참고했다.
개발 공부도 중요하지만 영어도 손 놓으면 안되겠다는 생각을 많이 했다..😂

상황마다 필요한 공식 문서를 찾고, 변경의 이유를 찾는 데에 많은 도움이 된 글 -> 실전! Spring Boot 3 마이그레이션

post-custom-banner

0개의 댓글