springboot migration

공식 가이드대로 했을때 몇가지 오류때문에 버전 업그레이드가 잘 되지 않았었기 때문에
삽질을 줄이고자 이 포스팅을 작성하게 되었습니다 😊
필수 사항 : JDK 8 이상

우선, 버전을 마이그레이션 할 때
몇가지 라이브러리들은 버전을 업그레이드 해주지 않으면 에러가 납니다.
그리고 한방에 버전을 쭉 올려버리면 오류를 잡았음에도 불구하고 자꾸 알수 없는 오류가 발생하며 빌드가 되지 않습니다(혹 이유를 아신다면 코멘트 부탁드리겠습니다 🙇)
따라서 1.5 -> 2.0 -> 2.1 순서로 버전을 업그레이드 했습니다.

순서

1. gradle 버전이 4.4 가 아닐경우 4.4-all 로 변경

gradle > wrapper > gradle-wrapper.properties 에서 아래와 같이 gradle 버전을 수정합니다.

1
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

2. build.gradledependency-management를 추가

1
2
apply plugin: 'io.spring.dependency-management'
runtime("org.springframework.boot:spring-boot-properties-migrator")

3. springboot 버전 바꾸기

1
springBootVersion = '2.0.5.RELEASE'

아래부턴 쓰는 라이브러리가 다양하기 때문에
버전 업그레이드로 인한 특정 라이브러리 설정의 변화로 발생하는 오류를 고치는 방법을 작성할 수 없었습니다.

대신 어떻게 고쳐야 하는지에 대한 문서는

위 링크를 참고하시면 될 것 같습니다.

4. 빌드

만약 컴파일 오류가 난다면 해당되는 오류를 고칩니다.
(ex: log4j 오류가 나서 log4j2로 고쳤습니다)

5. application.properties 수정

빌드 깨진 것을 확인 후 해당 설정을 application.properties에서 적절하게 고칩니다.
(여담으로 datasource 쪽에서 자꾸 오류가 났습니다)

6. bean overriding

org.springframework.beans.factory.support.Bean Definition Override Exception
위의 오류가 발생하면 application.properties 에 아래 코드를 추가합니다.
spring.main.allow-bean-definition-overriding=true
이것은 bean overriding을 허용한다는 것 입니다.

1
2
The server time zone value ‘KST’ is unrecognized or represents more than one time zone :   
mysql-connector-java

위의 오류가 발생하면 아래와 같이 DB url의 DB명 뒤에 ?characterEncoding=UTF-8&serverTimezone=Asia/Seoul 를 추가합니다

1
jdbc:mysql://아이피:포트/DB명?characterEncoding=UTF-8&serverTimezone=Asia/Seoul

7. 버전 업그레이드 2.0 -> 2.1

빌드 및 run이 성공적으로 되면 build.gradle에서 2.1.3.RELEASE 로 springboot 버전을 변경합니다.

1
springBootVersion = '2.1.3.RELEASE'

그 후 위의 작업을 반복하며 오류를 잡으면 됩니다.
2.1 버전 부턴 mysql 드라이버 명이 변경되었습니다.

1
2
기존 : com.mysql.jdbc.Driver
바뀐것 : com.mysql.cj.jdbc.Driver

8. properties-migrator 제거

빌드 및 run이 성공적으로 되면 build.gradle 에서 추가해뒀던 아래 코드를 제거 합니다.

1
runtime("org.springframework.boot:spring-boot-properties-migrator")

혹 내용이 잘못되었거나 보충해야 될 부분이 있다면 코멘트 남겨주세요 🙏
읽어주셔서 감사합니다 :)

  • 추가
    (19.5월 기준) 만약 swagger를 쓰는데 마이그레이션 시 오류 날 경우 2.9.1로 올려주셔야 됩니다 :)

참고자료