Spring Boot 3.x 새로운 기능 정리



Spring Boot 3.x는 Java 17 이상을 필수로 하며, GraalVM 네이티브 이미지, 가상 스레드 등 최신 기술을 지원합니다.



주요 변경사항








항목변경 내용
Java 버전Java 17+ 필수
Jakarta EEjavax.* → jakarta.* 패키지
Spring Framework6.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/myapp


HTTP 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.xBoot 3.x Native
시작 시간2-5초0.05-0.1초
메모리200MB+50MB
빌드 시간빠름느림 (5-10분)