Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 키클락
- zipkin
- 스프링 배치
- Spring Boot 4.0
- Java
- spring boot 4.x.x
- spring boot 4.0.0
- 생산자 소비자 패턴
- 사가 패턴
- saga pattern
- 스레드
- spring cloud
- 배치
- Spring Cloud Netfilx Eureka
- spring boot 3.x.x
- Spring Boot Actuator
- java21
- thread
- MSA
- JPA
- spring boot
- spring batch
- 멀티스레드
- 디자인패턴
- Resilinece4j
- java 정렬
- 알고리즘
- 타입스크립트
- TypeScript
- 디자인 패턴
Archives
- Today
- Total
PSD( Private-Self-Development )
Spring Boot 버전업 (4.X.X) 의 변경 사항 본문
개요
기존 Spring Boot 3.x 버전대에서 4.x 버전대로 업그레이드하는 경우
어떤 변경 사항이 있고 무엇을 수정해야 하는지 알아보자
0. JAVA 21 로 변경 필수
JAVA 21 변경점
JAVA 21은 가장 중요한 성능에 큰 개선이 이루어진 아주 중요한 버전이다. 1. Virtual Threadsjava 21 의 알파이자 오메가 기존 자바 스레드 1개 = OS 스레드 1개 생성 비용이 비싸고 개수 제한이 있음IO작업
chjysm.tistory.com
1. Virtual Threads 네이티브 지원
- yml 에 사용 설정 하면 주류 스레드로 Virtual Thread 사용
- spring.threads.virtual.enabled=true
- 고트래픽 처리 가능
- DB 드라이버, Spring Security, RestClient 등 내부 컴포넌트들이 Virtual Thread 친화적으로 바뀜
2. RestTemplate 은퇴 → RestClient 사용
- 기존에 무겁고 WebFlux 의존성이 필요하고 낡았던 RestTemplate 을 대체
- RestClient 는 web starter 만 있으면 사용할 수 있고 Fluent API 스타일의 모던한 클라이언트이다.
Post response = restClient.get()
.uri("https://api.example.com/posts/{id}", 1)
.retrieve()
.body(Post.class);
Fluent API 란?
언어 처럼 읽히는 코드 스타일
메서드 체이닝을 활용 코드를 영어 문장 쓰듯이 흐르듯이 이어지는 스타일 이다.
3. 더 빠른 기동 속도 (CDS, AOT 최적화)
GraalVM 네이티브 이미지 사용이 부담되는 경우를 위해,
JVM 위에서 동작하며 기동 속도를 줄여주는 기술(CDS, AOT) 이
기본 적용 되거나 옵션 하나로 적용되도록 최적화 되었다.
스프링 부트 구동이 느린 이유?
1. 수천개의 클래스 파일을 읽음
2. 유요한 파일인지 검증
3. 컴퓨터 메모리에 올릴 수 있는 형태로 변환(메타데이터화)
4. 메모리에 적재
이 동작을 실행 할 때 마다 반복하기 때문
GraalVM 네이티브 이미지 란?
자바 어플리케이션을 JVM 없이 실행 가능한 단일 파일로 완전히 바꿔버린 상태
CPU 가 JVM 없이 바로 실행하기 때문에 기동속도가 빠르다.
다만 동적로딩이 불가능 하고 재빌드 하는데 시간이 많이 걸린다.
CDS(Class Data Sharing) 란?
이전 구동 시의 클래스 메타데이터 파일(.jsa)을 생성해놓고 이를 구동할때 사용하는 것
기존 : 실행 할때 마다 JVM 이 클래스 데이터들을 처음부터 다시 다 읽어서 변환(메타데이터)하여 메모리에 올림
CDS : JVM이 클래스 메타데이터를 .jsa 라는 파일로 저장해놓고 다음 실행 때 해당 파일을 메모리에 복사함 (구동 빨라짐)
AOT(Ahead-Of-Time) 란?
빌드 할때, 컴포넌트 스캔 및 의존성 분석을 미리 해놓고 픽스 해놓는 것
기존 : 실행 할때 마다 컴포넌트 파일을 스캔하고 의존성 관계 파악하고 Bean 을 생성함
AOT : 빌드 할때 스프링이 이를 미리 분석하여 고정 실행하면 탐색 및 의존성 분석을 스킵하고 바로 빈을 등록함
4. Spring AI 정식 통합(Spring Boot Starter AI)
Spring AI 란 AI 계의 JPA 라고 생각하면 쉽다.
GPT, Gemini 등 특정 AI 에 접근하고 사용하기 위한 구현체를 각각 구현하지 않아도 되고
그저 Spring AI 의 property.yml 를 수정하여 갈아 끼울 수 있다.
이 라이브러리가 정식으로 통합되었다.
5. gRPC 모듈 공식 추가
기존 서드파티 라이브러리로 사용하던 gRPC가 Spring 공식 모듈로 편입(spring-integration-grpc)
6. MSA 관측성 모듈 통합
Spring Cloud Sleuth 가 삭제되고 Micrometer Tracing 으로 완전 대체
로그, 메트릭, 트레이싱이 단일 통합
별도 설정 없이도 그라파나/프로메테우스/Zipkin 등과 연동
7. JPA(Hibernate 6) 업그레이드
번역 속도가 향상되었고
이제는 property.yml 에 Dialect 를 명시하지 않아도 자동 으로 잘 잡는다.
'Backend > Spring' 카테고리의 다른 글
| Spring Boot 버전업 (3.X.X) 의 변경 사항 (0) | 2026.01.26 |
|---|