[Spring] Spring 6 & SpringBoot 3

Spring 6.x & SpringBoot 3.x Release

1. Spring 6.x

Java 17 기반

  • Java 17 : records, instanceof, multiline string 등
  • JDK 19 Virtual Thread 지원 (Project Loom)
    • https://howtodoinjava.com/java/multi-threading/virtual-threads/
    • https://spring.io/blog/2022/10/11/embracing-virtual-threads

Java EE -> Jakarta EE 로 대체

  • Jakarta EE9 ~ 지원
  • javax 패키지 -> jakarta 패키지로 변경

HttpClient

  • spring-docs
  • OpenFeign과 같이 어노테이션 기반 클라이언트 라이브러리
  • @HttpExchange

ProblemDetail API

  • HTTP API 응답에 대한 라이브러리 적용
  • spring-docs
  • RFC-7807
  • example : https://howtodoinjava.com/spring-mvc/spring-problemdetail-errorresponse/

AOT (Ahead-Of-Time) transformation

2. SpringBoot 3.x

  • spring 6.x 기반

Observability

T.B.D.

  • https://www.youtube.com/watch?v=j2JRrsc1who
  • https://youtu.be/TR254zh-f3c?t=2439
  • https://www.baeldung.com/spring-boot-3-observability#2-web

    Deprecated Feature 제거

  • spring.config.use-legacy-processing=true 제거

Springboot 버전 업그레이드 하기

  • Spring-boot-migrator 사용 가능 : https://github.com/spring-projects-experimental/spring-boot-migrator
    • spring boot 2.7 -> 3.0 업그레이드 지원
    • 2.6 -> 2.7 도 지원

Springboot 수동 업그레이드 하기

  1. JDK 17 업그레이드
  2. spring 5 / spring boot 2 최신 버전으로 업그레이드
    • deprecated 제거 필요 : sprinb boot 3에서 제거되기 때문
  3. spring 6 / spring boot 3 업그레이드
  4. import 문 수정 : javax. -> jakarta.*
    • javax.persistence -> jakarta.persistence
      • Hibernate ORM 5.6.x ~ : jakarta 지원
      • Spring Boot 3 ~ : Hibernate 6 / Flyway 9 사용
    • Jakarta EE9 지원하는 Tomcat, Jetty, Undertow 버전 업그레이드
    • javax.servlet -> jakarta.servlet
  5. API 스펙 변경
    • Spring MVC, Webflux에서 더이상 type 레벨에서 @RequestMapping 자동 탐색 X
    • RetTemplate 사용하는 경우 : Apache HttpClient 5 버전 업그레이드
    • HttpMethod 변경 : enum -> class
    • Log4j2 버전 업그레이드

참조

  • What’s New in Spring 6 and Spring Boot 3
  • Spring 6.x wiki
  • Spring 6.x 업그레이드 Wiki : https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x
  • https://marrrang.tistory.com/101?category=925235
  • https://velog.io/@jaehyunup/%EB%8B%A4%EA%B0%80%EC%98%A4%EB%8A%94-Spring-6.0-Boot-3.0-%EB%A6%B4%EB%A6%AC%EC%A6%88%EC%97%90%EC%84%9C%EC%9D%98-%EC%A3%BC%EB%AA%A9%ED%95%A0%EB%A7%8C%ED%95%9C-%EB%B3%80%EA%B2%BD