Springboot 2.4.0 변경 내용

Spring Boot 2.4 Release Notes

JUnit 5’s Vintage Engine Removed from spring-boot-starter-test

Config File Processing (application properties and YAML files) : Spring Boot Config Data Migration Guide
- config 파일 처리 과정 변경 → 기존 방식 이용하려면 spring.config.use-legacy-processing 설정 필요

a. Multi-Document Files
- YAML multi-document syntax 외 .profiles 에 구분자 추가 # — -

spring.application.name=MyApp
#---
spring.config.activate.on-cloud-platform=kubernetes
spring.application.name=MyCloudApp

b. Activation Properties
- spring.profiles 가 deprecated 되고 spring.config.activate.on-profile 로 변경됨

myprop=always-set
#---
spring.config.activate.on-cloud-platform=kubernetes
spring.config.activate.on-profile=prod | staging
myotherprop=sometimes-set

c. Constructor binding(2.2.0 이상 가능)
- ConfigurationProperties를 통한 properties에 @ConstructorBinding 지원 — setter 없는 불변 객체로 생성 할 수 있음

d. Profile Activation
- phase 별 spring.profiles.group 가능

Default Servlet Registration
- 더이상 서블릿 컨테이너에서 제공하는 DefaultServlet을 등록하지 않음

HTTP traces no longer include cookie headers by default

R2DBC
- spring-r2dbc module로 스프링프레임워크에 포함됨
- A R2dbcEntityTemplate is available to simplify the use of Reactive R2DBC usage through entities

Spring Framework 5.3 적용 : What’s New in Version 5.3
- Support for RxJava 3 : netty logging AdvancedByteBufFormat.TEXTUAL 지원

- Binding support for Java 14/15 record classes and similarly styled constructors/accessors
- New spring-r2dbc support module, moving core R2DBC support and the reactive R2dbcTransactionManager into the Spring Framework umbrella.

Java 15 Support

Layered jar enabled by default

추가적으로 logging으로 log4j2를 사용하는 경우 layertools에서 NPE가 발생합니다. 해당 이슈는 2.4.1에 수정될 예정이며 임시방편으로 system property 추가로 해결 할 수 있습니다. (NPE using layertools with Log4j2)

java -Djarmode=layertools -Dorg.springframework.boot.logging.LoggingSystem=none -jar application.jar