Contents
see List개요
Spring Boot 3.4는 2024년 11월에 정식 릴리스되며, Spring Framework 6.2 기반 위에 다양한 개선사항을 제공합니다. 기존 3.x 사용자라면 비교적 부드럽게 마이그레이션할 수 있지만, 일부 주요 변경사항은 반드시 확인해야 합니다. 이 글에서는 Spring Boot 3.4의 핵심 신기능과 실제 마이그레이션 과정에서 주의할 점을 정리합니다.
핵심 개념
Spring Boot 3.4의 가장 눈에 띄는 변화는 구조적 로깅(Structured Logging) 지원입니다. JSON 포맷으로 로그를 출력할 수 있어 ELK Stack이나 Datadog 같은 로그 수집 시스템과의 연동이 크게 간소화되었습니다.
또한 RestClient와 RestTemplate에 대한 자동 구성이 개선되어, HTTP 클라이언트 설정이 더욱 직관적으로 변경되었습니다. SSL 번들 자동 리로드 기능도 추가되어 인증서 갱신 시 애플리케이션 재시작 없이 반영됩니다.
Virtual Thread 지원이 한층 성숙해져서, Tomcat과 Jetty 환경에서 가상 스레드를 활용한 동시성 처리가 안정화되었습니다. spring.threads.virtual.enabled=true 설정 하나로 손쉽게 활성화할 수 있습니다.
실전 예제
구조적 로깅을 활성화하는 방법은 다음과 같습니다.
# application.yml
logging:
structured:
format:
console: ecs # Elastic Common Schema
file: logstash # Logstash JSON 포맷
커스텀 필드를 추가하려면 LoggingEventAppender를 확장합니다.
@Component
public class CustomStructuredLogger implements StructuredLogFormatter {
@Override
public String format(LogEvent event) {
Map<String, Object> json = new LinkedHashMap<>();
json.put("timestamp", event.getTimestamp());
json.put("level", event.getLevel());
json.put("message", event.getMessage());
json.put("service", "my-app");
json.put("traceId", MDC.get("traceId"));
return new ObjectMapper().writeValueAsString(json);
}
}
RestClient 자동 구성 활용 예제입니다.
@Service
public class ExternalApiService {
private final RestClient restClient;
public ExternalApiService(RestClient.Builder builder) {
this.restClient = builder
.baseUrl("https://api.example.com")
.defaultHeader("Accept", "application/json")
.build();
}
public UserDto getUser(Long id) {
return restClient.get()
.uri("/users/{id}", id)
.retrieve()
.body(UserDto.class);
}
}
활용 팁
- 마이그레이션 순서: Spring Boot 3.3에서 3.4로 이동 시, 먼저 deprecated API 경고를 모두 해결한 뒤 버전을 올리세요.
- 프로퍼티 변경 확인:
spring-boot-properties-migrator의존성을 추가하면 변경된 설정 키를 자동으로 감지합니다. - 테스트 호환성:
@SpringBootTest의 동작이 미세하게 변경되었으므로, 통합 테스트를 반드시 전수 실행하세요. - Java 버전: 최소 Java 17이 필요하며, Java 21 사용 시 Virtual Thread 기능을 최대한 활용할 수 있습니다.
- Docker 이미지: Buildpack 기반 OCI 이미지 빌드가 개선되어
spring-boot:build-image태스크 성능이 향상되었습니다.
마무리
Spring Boot 3.4는 구조적 로깅, SSL 자동 리로드, Virtual Thread 안정화 등 실무에서 바로 활용할 수 있는 기능이 많습니다. 특히 MSA 환경에서 로그 관리가 중요한 팀이라면 구조적 로깅 기능만으로도 업그레이드 가치가 충분합니다. 점진적으로 마이그레이션을 진행하되, 반드시 테스트 커버리지를 확보한 상태에서 진행하시기 바랍니다.