Spring Boot 3
2023. 4. 7. 10:07ㆍProgramming/Spring
반응형
주요 변경사항
- https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
최소 요구사항 변경
- 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 등
- 인텔리제이에서 쉽게 마이그레이션 해주는 기능을 제공하는데, 이를 활용해서 쉽게 변환할 수 있다.
- https://blog.jetbrains.com/idea/2021/06/intellij-idea-eap-6/
- Refactor > Migrate Packages and Classes > JavaEE to Jakarta EE 제공
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.6부터 순환참조를 기본적으로 모두 금지 시킴. (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes)
- 순환참조 허용 옵션이 있지만 권고하지 않음. ( spring.main.allow-circular-references=true )
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'
- 마이그레이션 이후 해당 모듈은 반드시 제거
반응형
'Programming > Spring' 카테고리의 다른 글
Multi Thread (0) | 2019.07.30 |
---|---|
[Spring] eclipse Tomcat에 프로젝트 추가 안될 때 (4) | 2018.06.03 |
[Spring] 상수 설정하기( properties ) (0) | 2018.05.29 |
[Spring] Mysql Connection을 잃어 버릴 경우 (0) | 2018.02.12 |
[MyBatis] if 에서 문자열 비교시 NumberFormatException 해결 방법 (0) | 2018.02.01 |