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 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분)
Share this

Spring

Have a questions?

견적 및 기술문의

mobile : 010-7931-4813

Contact Form