개요
Spring Boot 4.0.0이 2025.11.20 정식으로 출시(https://spring.io/blog/2025/11/20/spring-boot-4-0-0-available-now)되었고, 많은 변경사항 중 하나인 Modular Spring Boot 4에 대하여 알아보자
A Modular Spring Boot 4
Spring Boot 4가 출시되고 큰 변경사항 중 하나는 바로 기존에 단일(monolithic) spring-boot-autoconfigure JAR 파일 대신, 기능을 더 작고 집중된 모듈로 분리하여 각각의 JAR 파일로 제공하는 것이다.
아래는 Spring Boot4와 Spring Boot 3의 spring-boot-autoconfigure JAR 파일에 패키지 구조를 보면 Spring Boot 4에서 크게 줄어든 모습을 볼 수 있다. Spring Boot 3에서는 화면보다 더 많아서 스샷에 다 나오지 않는다.
| Spring Boot 4 | Spring Boot 3 |
![]() |
![]() |
Spring Boot가 모듈화를 선택한 이유
Spring Boot 4가 출시되기 전부터 Spring 팀은 모듈화를 고민하고 있었다. Spring Boot 1.0에서는 autoconfigurre 파일이 크지 않았지만 Spring Boot 3까지 많은 기술들이 추가되었다. 그리고 사용자는 사용하지 않지만 불필요하게 큰 JAR 파일을 추가해야 했고, 의존성이 추가된 라이브러리에 대하여 명확히 사용하는지 하지 않는지 확인하기 어려웠다.
또한 코드베이스를 모듈화 하면 아래와 같은 장점을 얻을 수 있다.
- Maintainability and architectural clarity: 더 작은 모듈과 강화된 경계는 개발자에게 각 도메인에 대하여 더욱 명확하게 추론할 수 있게 해준다. 또한 IDE는 더 이상 필요하지 않을 클래스에 대한 코드 자동완성을 하지 않는다.
- Reduced artifact sizes and footprint: 사용하지 않는 여러 기능이 포함된 spring-boot-autoconfigure JAR 파일 하나를 제공하는 대신, 애플리케이션에 필요한 모듈만 가져오게 되어, 클래스 경로 오버해드, 시작 검사 비용 및 디스크 공간을 절약할 수 있다.
- Stronger singnals and avoidance of accidental auto-configuration: 모듈이 범위(scope)로 구분되기 때문에, Spring Boot는 개발자가 어떤 이유로 의존성을 추가했는지 명확하게 알 수 있다. 이제 Spring Batch 애플리케이션에서 RestClient를 사용하기 위해서 spring-web 모듈을 추가할 필요가 없고 spring-boot-starter-restclient만 추가해서 RestClient를 추가해서 사용할 수 있다.
- New use-cases enabled: 모듈화를 통해 이미 새로운 사용 사례가 생겨나고 있으며, 앞으로 더 많은 사용 사례가 생길것으로 예상한다.
Spring Boot 4로 마이그레이션하기
Spring Boot 3에서는 Flyway JAR 파일이 있으면 Flyway가 자동으로 구성되었다. 또한 특정 Bean이 있는 경우에도 spring-boot-autoconfiguration에서 탐지하여 해당 기능을 활성화해줬다. 하지만 Spring Boot 4는 Flyway를 사용하려면 아래와 같이 Flyway 스타터를 포함시켜야 모듈이 제대로 설정되도록 변경되었다.
implementation 'org.springframework.boot:spring-boot-starter-flyway'
또한 주요한 스터터(starter)에는 해당 테스트 스타터가 있으며 이 스타터도 추가해야 적절한 테스트 지원을 받을 수 있게 되었다.
implementation 'org.springframework.boot:spring-boot-starter-mongodb'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
testImplementation 'org.springframework.boot:spring-boot-starter-mongodb-test'
testImplementation 'org.springframework.boot:spring-boot-starter-data-redis-test'
Spring Boot 4에 모듈화로 인해 기존 Spring Boot를 사용하던 애플리케이셔을 상당한 마이그레이션을 해야 할지 모른다. 정확한 마이그레이션 가이드는 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide를 참고하자.
마무리
Spring Boot 4의 autoconfiguration 모듈화는 유지관리, 구설 및 간소화된 프레임워크를 위한 의도적인 아키텍처 단계이다. 또한 기능을 집중된 모듈로 분할하고, 클래식 스터터(spring-boot-starter-classic)를 도입하며, 테스트 스타터를 제공함으로써, Spring Boot는 점진적인 업그레이드 경로를 위한 도구 또한 제공한다. 마이그레이션 오버헤드가 다소 발생할 수 있지만, 모듈화의 장점을 생각한다면 지금이라도 조금씩 마이그레이션을 검토 및 진행하는 것을 추천한다.
'dev > spring' 카테고리의 다른 글
| Spring - Path Prefix (0) | 2025.08.18 |
|---|---|
| Spring Framework 7.0.0 API Versioning (0) | 2025.07.31 |
| Spring Framework 7.0 - Resilience Features (회복력 기능) (2) | 2025.07.27 |
| Jackson 3.0.0 알아보기 (0) | 2025.07.15 |
| Spring Batch에서 JobParameter사용하기 (0) | 2025.06.17 |

