spring boot 2.7.x -> 3.2.x 업그레이드 하며 맞이했던 문제들 메모

Dae-Hwa Jeong·2024년 7월 1일
1

한번에 넘어가려다 잘 안 돼서 단계별로 수정

배치는 https://velog.io/@dae-hwa/Spring-Batch-4-5-boot-2-3 참고

2.7.18 로 버전업

2024-05월 기준 최신버전

io.spring.dependency-management
1.0.15.RELEASE 로 버전 업
(https://docs.spring.io/spring-boot/docs/2.7.18/reference/html/dependency-versions.html)

  • mysql:mysql-connector-java -> com.mysql:mysql-connector-j 변경

Java 17 로 버전 업

부트 3부터 java 17이 최소버전이기 때문에 미리 버전업 후 테스트

### Error querying database.  Cause: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Arrays$ArrayList.contains(java.lang.Object) accessible: module java.base does not "opens java.util" to unnamed module @a4102b8
### Cause: java.lang.reflect.InaccessibleObjectException: Unable to make public boolean java.util.Arrays$ArrayList.contains(java.lang.Object) accessible: module java.base does not "opens java.util" to unnamed module @a4102b8

에러 발생

https://github.com/mybatis/mybatis-3/issues/2383#issuecomment-971649861

That error may occur if you write <if test="x.isEmpty()">.
Try <if test="x.empty"> or <if test="x.isEmpty"> instead.

따라해봐도 되지 않는다.

OGNL 버전 문제라고 한다(mybatis 3.5.10 부터 클리어)

원래 Apache commons 프로젝트였는데, 관리가 되고 있지 않는 듯 하다.
이런 프로젝트들을 orphan software라는 곳에서 관리중...
Home for projects that lost their maintainers 라고 적혀있다.
- OGNL? https://jehuipark.github.io/java/mybatis_ognl 이게 읽기 쉬웠다

그래서 mybatis-spring-boot-starter 2.3.x로 버전 업

3.0.x 로 버전업

io.spring.dependency-management 1.1.x 로 업그레이드

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide

++ aws 관련 라이브러리 사용할 경우 slf4j 관련 버전 충돌이 발생할 수 있다. 나는 athena jdbc를 사용할때 gradle에서 별도 저장소의 jar 파일을 직접 가져와 사용하고 있는데 이 부분에서 문제가 생겼다.

3.1.x 로 버전업

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.1-Release-Notes

뜬금없이 Unable to start web server 에러 발생 시

Application run failed
org.springframework.context.ApplicationContextException: Unable to start web server
//...
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
//...
Caused by: java.lang.IllegalStateException: Failed to register 'servlet dispatcherServlet' on the servlet context. Possibly already registered?
//...
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:126)
	... 13 common frames omitted

3.2.x 로 버전업

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes

  • spring cloud 버전을 2023.0.2으로 올려야 한다.
    (https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions#supported-releases)

  • 영속 프레임워크 여러개 사용하는 경우 Bean 등록 중복되는 경우 체크 필요

    • 나의 경우 jpa + mybatis를 사용하고, 같은 패키지를 읽어오도록 할 경우 ConflictingBeanDefinitionException 발생
    • ClassPathBeanDefinitionScanner.checkCandidate 결과가 달라졌을 것으로 추정 (상속구조가 달라졌을 수도 있는데 추후 확인 해봐야 할듯)
profile
대화로그

0개의 댓글