Spring Boot 3

2023. 4. 7. 10:07Programming/Spring

반응형

주요 변경사항

최소 요구사항 변경

  • Spring Framework 6
  • Java 17 (Jakarta EE 9)
  • Gradle 7.5
  • Groovy 4.0
  • Hibernate 6.1
  • Kotlin 1.6

Jakarta EE

  • Java EE 가 Jakarta EE로 변경됨에 따라, 패키지 이름에 javax를 가진 모든 값들은 jakarta로 변경해야함.
  • Tomcat 10, Jetty 11, Undertow 2.2.14 (undertow-servlet-jakarta도 포함)으로 업그레이드 필요
  • Hibernate ORM 5.6.x 버전부터 hibernate-core-jakarta 사용
  • Querydsl 사용 시 jakarta를 지원하는 버전으로 사용해야한다.
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' 
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' 
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
  • 일부 클래스는 javax를 사용하므로 javax -> jakarta로 일괄 수정하는 것은 권장하지 않는다.
    • javax.sql.DataSource, javax.crypto.SecretKey 등
  • 인텔리제이에서 쉽게 마이그레이션 해주는 기능을 제공하는데, 이를 활용해서 쉽게 변환할 수 있다.

Commons FileUpload, Tiles, FreeMarker JSP support 같은 서블릿 기반 기능이 지원 종료

  • MultipartFile 혹은 StandardServletMultipartResolver 권장
  • 이외에는 Rest 기반 웹 아키텍처 사용

Spring MVC와 Spring WebFlux에서 더 이상 type 레벨에서의 @RequestMapping을 자동 탐색하지 않음

  • interface의 경우에는 @RequestMapping을 붙여도 더 이상 탐색되지 않음
  • Class에 붙이거나 interface에도 사용하고 싶으면 @Controller도 붙여야 함

Log Date Format

  • Logback 및 Log4j2 로그 메세지의 날짜와 시간의 기본 포맷이 ISO-8601 표준을 준수하도록 변경
  • 새로운 기본 포맷은 yyyy-MM-dd’T’HH:mm:ss.SSSXXX으로, T를 이용해 날짜와 시간을 분리하며 타임존을 붙인다.
    • LOG\_DATEFORMAT\_PATTERN 환경 변수 또는 logging.pattern.dateformat property를 통해 기존 값인 yyyy-MM-dd HH:mm:ss.SSS로 표현 가능

Path Matching

  • Spring MVC와 Spring Webflux의 경로 매칭 규칙 변경에 따라 맨 뒤에 슬래시 유무는 이제 다른 경로를 의미한다.
    • SpringBoot 3.0 이전 → /foo/bar == /foo/bar/
    • SpringBoot 3.0 이후 → /foo/bar != /foo/bar/
  • 한시적으로 옵션을 통해 위 사항을 유지할 수 있다.  
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
      configurer.setUseTrailingSlashMatch(true);
    }
}

Circular References

spring boot 2.7 이하 사용 시

  • Spring Boot 2.7보다 낮은 버전을 사용하고 있다면, 바로 3.0으로 올리는것 보다 2.4 -> 2.6 -> 2.7 -> 3.0 순으로 버전 업 권장

migration 모듈 제공

  • 일부 configuration 설정값의 이름이 바뀌거나 제거되어 spring-boot-properties-migrator 모듈을 제공
    • implementation 'org.springframework.boot:spring-boot-properties-migrator'
    • 마이그레이션 이후 해당 모듈은 반드시 제거

 

반응형