본문 바로가기
프레임워크/스프링

[SpringBoot] 라이브러리 관리

by so5663 2023. 3. 11.

 

스프링부트는 라이브러리들을 편리하게 사용할 수 있게 다양한 기능들을 제공한다고 합니다.

  • 외부 라이브러리 버전 관리
  • 스프링 부트 스타터 제공

이런 기능들이 없으면 수 많은 라이브러리를 직접 버전까지 골라서 선택해야 하고 라이브러리들 간에 서로 호환이 잘 되는지 확인도 해야하는 까다로운도 있다.

 

dependencies {
 //2. 스프링 부트 라이브러리 버전 관리
 //스프링 웹, MVC
 implementation 'org.springframework:spring-webmvc'
 
 //내장 톰캣
 implementation 'org.apache.tomcat.embed:tomcat-embed-core'
 
 //JSON 처리
 implementation 'com.fasterxml.jackson.core:jackson-databind'
 
 //스프링 부트 관련
 implementation 'org.springframework.boot:spring-boot'
 implementation 'org.springframework.boot:spring-boot-autoconfigure'
 
 //LOG 관련
 implementation 'ch.qos.logback:logback-classic'
 implementation 'org.apache.logging.log4j:log4j-to-slf4j'
 implementation 'org.slf4j:jul-to-slf4j'
 
 //YML 관련
 implementation 'org.yaml:snakeyaml'
}

라이브러리를 보면 버전 정보가 모두 제거되었다. io.spring.dependency-management  가 버전관리를 해준다.

 

버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 한다.

  • dependency-management 버전 관리 io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies 에 있는 다음 bom 정보를 참고한다.
  • 참고로 spring-boot-dependencies 는 스프링 부트 gradle 플러그인에서 사용하기 때문에 개발자의 눈에 의존관계로 보이지는 않는다.

 

스프링 부트 스타터

 

dependencies {
 //3. 스프링 부트 스타터
 implementation 'org.springframework.boot:spring-boot-starter-web'
}
  • spring-boot-starter-web 이 라이브러리 하나로 지금까지 우리가 직접 넣어주었던 모든 라이브러리가 포함된다.
  • 이것은 사용하기 편리하게 의존성을 모아둔 세트이다.
    • 이것을 하나 포함하면 관련 의존성 세트가 한번에 들어온다.
    • 스타터도 스타터를 가질 수 있다
  • 스프링과 웹을 사용하고 싶으면 spring-boot-starter-web
    • 스프링 웹 MVC, 내장 톰캣, JSON 처리, 스프링 부트 관련, LOG, YML 등등
  • 스프링과 JPA를 사용하고 싶으면 spring-boot-starter-data-jpa
    • 스프링 데이터 JPA, 하이버네이트 등등