JDK 21 지원과 더불어 어떤 새로운 기능들이 추가되었는지 정리했습니다.
1. 가상스레드 지원
가상 스레드를 사용하기 위해서는 JDK21 에서 실행해야 하고, spring.threads.virtual.enabled 속성을 true로 설정해야 합니다.
가상스레드를 활성화하면, Tomct이나 Jetty는 요청 처리에 가상스레드를 사용하게 됩니다. 그리고 applicationTaskExecutor Bean 은 가상스레드 사용을 위한 SimpleAsyncTaskExecutor으로 변경됩니다. 이로 인해서 @Async 호출로 EnableAsync 가 적용되거나, Spring MVC 에서 비동기 요청을 처리하거나, Spring Webflux의 Blocking 실행 지원 등 애플리케이션 Task Executor 를 사용하는 모든 곳에서 가상 스레드를 사용하게 됩니다.
2. RestClient
Spring Framework 6.1 에 도입된 새로운 RestClinet 인터페이스에 대한 지원이 추가됩니다. 이 인터페이스는 WebClient 와 유사한 디자인으로 Functional 스타일의 Blocking HTTP API 를 제공합니다. 기존의 RestTemplate 의 대안으로 RestClient 사용을 고려해 볼 수 있습니다.
3. 가시성 강화
- 이제 Spring Boot는 마이크로미터 추적을 사용할 때마다 상관 관계 ID를 자동으로 기록합니다. 자세한 내용은 업데이트된 설명서를 참조하세요.
- Micrometer의 @Timed, @Counted, @NewSpan, @ContinueSpan 및 @Observed 주석을 사용할 수 있습니다.
- OpenTelemetry에 대한 자동 구성이 개선되었습니다.
- Micrometer 1.12에서 더 광범위한 예제를 지원합니다.
4. 도커 이미지
- Maven 및 Gradle 플러그인으로 이미지를 빌드할 때 사용되는 기본 CNB 빌더가 변경되었습니다.
- 이전 기본 빌더에는 우분투 18.04 기반 실행 이미지가 포함되어 있었지만, 새로운 기본 빌더에는 우분투 22.04 기반 실행 이미지가 포함되어 있습니다
5. 기타 변경사항
- JdbcClient 를 지원합니다.
- GraphQL용 Spring은 애플리케이션태스크실행자를 사용하도록 자동 구성됩니다.
- OAuth2 토큰 Verifier : 자동 구성된 JwtDecoder 또는 ReactiveJwtDecoder는 이제 토큰 유효성 검사에 OAuth2TokenValidator<Jwt> 빈을 사용합니다.
- RabbitMQ : 이제 RabbitMQ 연결은 spring.rabbitmq.ssl.bundle 속성을 사용하여 SSL 번들의 SSL 신뢰 자료를 사용하도록 구성할 수 있습니다. RabbitMQ 컨테이너 forceStop 속성에 대한 지원이 추가되었습니다.
- 임베디드 웹서버가 시작될 때 기록되는 포트 정보가 개선되어 더욱 일관성이 높아졌습니다.
- 가상 스레드 문제를 자동으로 구성하는 데 도움이 되는 새로운 @ConditionalOnThreading 어노테이션이 도입되었습니다.
- Kotlin 직렬화를 위한 종속성 관리가 제공됩니다.
* 업그레이드 시 주의사항
- Spring Boot 3.0 이후 더 이상 사용되지 않는 Deprecated 클래스나 메서드가 삭제됩니다. 기존 프로젝트에 Deprecated 기능들을 사용하고 있지 않았는지 체크가 필요합니다.
더 보기
- Spring Boot 3.2.0 available now
'백엔드기술 > 스프링프레임워크' 카테고리의 다른 글
ChatGPT 로 Spring Boot 프로젝트 뚝딱 만들기 (5) | 2023.02.24 |
---|---|
[사소한 TIP] Spring Data JPA에서 FindBy 와 FindAllBy 차이점 (0) | 2023.02.17 |
Spring Boot 3.0 무엇이 달라질까? (5) | 2022.11.01 |