Spring Boot/스프링 프레임워크 vs 스프링 부트, 의존성 관리

[Spring boot] 의존성 관리

재윤 2025. 7. 21. 15:58
반응형

의존성 관리

  • Spring Framework는 의존성 설정을 개발자가 직접 하고, 호환되는 버전 관리도 수동으로 해야 해서 불편함이 많았음.

하지만 스프링 부트에서는 이 같은 불편함을 해소 하기 위해

💡 ‘spring-boot-starter’라는 의존성을 제공
  • 의존성은 여러 종류가 있음
  • 각 라이브러리의 기능과 관련해서 자주 사용되고 서로 호환되는 버전의 모듈 조합을 제공 → 이를 통해 개발자는 라이브러리 호환 문제를 해결할 수 있다.

 

좀 더 예를 들어 설명한다면

  • 기존 Spring Framework 방식의 문제점

예전에는 어떻게 했을까?

기존 Spring 프로젝트에서는 다음과 같은 식으로 직접 라이브러리 버전을 정해서 명시해야 했음

dependencies {
    implementation 'spring-core:4.3.0.RELEASE'
    implementation 'spring-context:4.3.0.RELEASE'
    implementation 'spring-webmvc:4.3.0.RELEASE'
    implementation 'jackson-databind:2.8.0'
    implementation 'log4j:1.2.17'
    ...
}

  • 버전 하나라도 안 맞으면 에러 발생
  • A 버전이 B 버전과 호환되지 않으면 충돌
  • 직접 하나하나 맞춰줘야 해서 굉장히 귀찮고 오류 발생 가능성 큼

Spring Boot의 해결책: spring-boot-starter

Spring Boot에서는 이런 고통을 줄이기 위해 아래처럼 간단하게 사용

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

💡 내부적으로는 위 1줄이 여러 개의 라이브러리와 그 호환 버전들을 모두 자동으로 포함해줌

 

예제: spring-boot-starter-web이 실제로 포함하는 것들

spring-boot-starter-web
├── spring-boot-starter
│   ├── spring-boot
│   ├── spring-core
│   ├── spring-boot-autoconfigure
│   └── slf4j (로깅)
├── spring-web
├── spring-webmvc
├── jackson (JSON 직렬화)
├── validation-api (유효성 검사)
└── tomcat (내장 서버)

 

그래서 개발자는 이걸 몰라도 됨

  • 톰캣을 따로 설치하거나 설정할 필요 없음
  • 웹 서버 설정할 필요 없음
  • JSON 라이브러리 설정 안 해도 됨

spring-boot-starter 많이 사용되는 라이브러리 소개

  • spring-boot-starter web : 스프링 MVC를 사용하는 RESTFul 애플리케이션을 만들기 위한 의존성이다. 기본적으로 내장 톰캣(Tomcat)이 포함돼 있어 jar 형식으로 실행 가능
  • spring-boot-starter-test : JUnit Jupiter, Mockito 등의 테스트용 라이브러리 포함
  • spring-boot start-jdbc : HikariCP 커넥션 풀을 활용한 JDBD 기능을 제공
  • spring-boot-starter-security : 스프링 시큐리티(인증, 권한, 인가 등) 기능 제공
  • spring-boot-starter-data-jpa : 하이버네이트를 활용한 JPA 기능 제공
  • spring-boot-starter-cache : 스프링 프레임워크의 캐시 기능 지원

의존성 조합 충돌 문제가 없도록 ‘spring-boot-starter-parent’가 검증된 조합 제공

반응형