
SOFTMOA TECHNOLOGY
Spring Boot 3.x 새로운 기능 정리
소프트모아가 정리한 기술 기록입니다.
Contents
작성일 2025. 11. 30.
Spring Boot 3.x 새로운 기능 정리
Spring Boot 3.x는 Java 17 이상을 필수로 하며, GraalVM 네이티브 이미지, 가상 스레드 등 최신 기술을 지원합니다.
주요 변경사항
| 항목 | 변경 내용 |
|---|---|
| Java 버전 | Java 17+ 필수 |
| Jakarta EE | javax.* → jakarta.* 패키지 |
| Spring Framework | 6.0+ |
| 네이티브 이미지 | GraalVM 공식 지원 |
패키지 변경 (Jakarta EE 9+)
// Before (Spring Boot 2.x)
import javax.servlet.http.HttpServletRequest;
import javax.persistence.Entity;
import javax.validation.Valid;
// After (Spring Boot 3.x)
import jakarta.servlet.http.HttpServletRequest;
import jakarta.persistence.Entity;
import jakarta.validation.Valid;Virtual Threads 지원
# application.yml
spring:
threads:
virtual:
enabled: true
# 또는 @Async에서 사용
@Configuration
@EnableAsync
public class AsyncConfig {
@Bean
public AsyncTaskExecutor applicationTaskExecutor() {
return new TaskExecutorAdapter(
Executors.newVirtualThreadPerTaskExecutor()
);
}
}GraalVM 네이티브 이미지
# pom.xml
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
# 빌드
mvn -Pnative native:compile
# 실행 (매우 빠른 시작)
./target/myappHTTP Interface Client
// 선언적 HTTP 클라이언트
public interface UserClient {
@GetExchange("/users/{id}")
User getUser(@PathVariable Long id);
@PostExchange("/users")
User createUser(@RequestBody User user);
}
// 빈 등록
@Bean
public UserClient userClient(WebClient.Builder builder) {
WebClient webClient = builder.baseUrl("https://api.example.com").build();
HttpServiceProxyFactory factory = HttpServiceProxyFactory
.builderFor(WebClientAdapter.create(webClient))
.build();
return factory.createClient(UserClient.class);
}Problem Details (RFC 7807)
# application.yml
spring:
mvc:
problemdetails:
enabled: true
# 자동으로 표준 에러 응답 형식 적용
{
"type": "about:blank",
"title": "Not Found",
"status": 404,
"detail": "User not found",
"instance": "/users/123"
}Observability 개선
# Micrometer Observation API
@Observed(name = "user.find")
public User findUser(Long id) {
return userRepository.findById(id);
}
# 자동 메트릭, 트레이싱, 로깅 연동
spring:
application:
name: my-app
management:
tracing:
sampling:
probability: 1.0마이그레이션 체크리스트
- Java 17 이상으로 업그레이드
- javax.* → jakarta.* 패키지 변경
- spring.factories → AutoConfiguration.imports
- Hibernate 6.x 호환성 확인
- 테스트 의존성 업데이트
성능 비교
| 항목 | Boot 2.x | Boot 3.x Native |
|---|---|---|
| 시작 시간 | 2-5초 | 0.05-0.1초 |
| 메모리 | 200MB+ | 50MB |
| 빌드 시간 | 빠름 | 느림 (5-10분) |
Share this
Spring
Showing 1 to 10 of 79 entries
