콘텐츠로 이동

Spring Boot 의존성 스타터(Starters)

개요

Spring Boot로 프로젝트를 시작할 때 "어떤 의존성을 몇 버전으로 추가해야 하지?" 하고 예제 코드를 뒤져가며 의존성 선언을 붙여넣는 경험, 한 번쯤 있을 거예요. Spring Boot는 이런 수고를 덜어주는 스타터(starter)를 제공합니다. 스타터는 "이 기술을 쓰고 싶다면 이것만 추가하면 된다"는 편의 의존성 묶음이에요. 예를 들어 JPA로 데이터베이스 접근을 시작하고 싶다면 spring-boot-starter-data-jpa 의존성 하나만 추가하면 됩니다.

핵심 개념

스타터가 뭘 해주나

스타터에는 프로젝트를 빠르게, 그리고 일관된 지원 버전으로 띄우는 데 필요한 의존성 대부분이 들어 있어요. 특정 기술과 관련된 모든 스프링 및 서드파티 의존성이 관리 전이 의존성으로 함께 딸려 옵니다. "이 기능에는 이 스타터를 넣자"라는 하나의 결정으로 필요한 것들을 한 번에 채우는 셈이죠.

의존성 관리는 버전 관리를 대신

Spring Boot의 각 릴리스는 자체적으로 지원하는 의존성의 큐레이션 목록(curated list)을 제공합니다. 그래서 빌드 설정에서 해당 의존성들의 버전을 대부분 명시하지 않아도 돼요. Spring Boot를 업그레이드하면 이 의존성들이 일관되게 함께 올라갑니다. 물론 특정 의존성의 버전을 직접 지정해 권장값을 덮어쓸 수도 있어요. 출시 버전마다 기준 Spring Framework 버전이 짝지어져 있으니, 그 버전을 직접 지정하지 않는 게 권장됩니다.

대표 스타터들

org.springframework.boot 그룹 아래 많은 애플리케이션 스타터가 있어요.

  • spring-boot-starter — 자동 설정 지원, 로깅, YAML을 포함한 핵심 스타터.
  • spring-boot-starter-webmvc — Spring MVC와 Tomcat 기반 웹(이전 spring-boot-starter-web의 후속).
  • spring-boot-starter-webflux — WebFlux와 Reactor Netty 기반 리액티브 웹.
  • spring-boot-starter-data-jpa — Hibernate 기반 Spring Data JPA.
  • spring-boot-starter-data-redis — Lettuce 클라이언트 기반 Redis.
  • spring-boot-starter-security — Spring Security.
  • spring-boot-starter-validation — Hibernate Validator 기반 빈 검증.
  • spring-boot-starter-test — JUnit Jupiter, Hamcrest, Mockito를 포함한 테스트 스타터.
  • spring-boot-starter-actuator — 운영 모니터링·관리 기능을 제공하는 Actuator 스타터.

이 밖에 특정 기술 측면을 빼거나 바꾸고 싶을 때 쓰는 스타터(WebFlux용 Jetty 런타임, Logback·Log4j2 등)도 있습니다. 커뮤니티가 만든 스타터는 spring-boot-starters 저장소의 README에서 확인할 수 있어요.

빌드 시스템

Maven이나 Gradle을 권장하며, Maven Central의 아티팩트를 소비하고 의존성 관리를 지원하는 빌드 시스템을 고르는 게 좋아요. Ant+Ivy로도 가능하지만 잘 지원되지는 않습니다. 스타터는 spring-boot-dependencies라는 표준 BOM(대량 재료 명세)로 제공되어 Maven·Gradle 모두에서 쓸 수 있어요.

실제 적용 (데이터스케쳐스 관점)

웹빌더 백엔드의 Spring Boot 모듈은 스타터를 조합해 필요한 기술 묶음을 선언합니다.

  • 선언적 의존성 — 웹, 데이터, 보안, 모니터링이 필요하면 해당 스타터만 추가해 반복 설정을 줄여요.
  • 버전 관리 위임 — Spring Boot의 큐레이션 목록에 버전 관리를 맡기고, 필요한 경우에만 버전을 오버라이드해요.
  • 운영 스타터spring-boot-starter-actuator를 추가해 모니터링 지표를 기본 제공받아요.

더 알아보기