다시 웹, 백엔드로/스프링

스프링 부트 스타터와 라이브러리 관리

EnoughTT 2023. 8. 18. 13:48

스프링 부트 스타터와 라이브러리 관리

 

라이브러리 관리의 어려움

  • 프로젝트를 시작하면 어떤 라이브러리를 사용할 지 고민하고 선택함
  • 각 라이브러리들끼리 호환이 잘되는지 안되는지 알아야해 버전까지 고민해야 함
  • 프로젝트 세팅 시간 ⬆️

 

라이브러리 직접 관리

버전 직접 지정

문제점

  • 수 많은 라이브러리를 알아야하고, 버전까지 골라서 선택해야함
  • 호환이 잘 안되는 버전도 있음

 

스프링 부트 라이브러리 버전 관리

스프링 부트가 라이브러리의 버전을 직접 관리해주고, 원하는 라이브러리만 고르고 버전은 생략해도 됨

스프링 부트가 최적화된 라이브러리 버전을 선택해줌

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

 

라이브러리만 지정

 

 

dependency-management 버전관리

io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies 에 있는 bom 정보를 참고함 (bom을 여기서 볼 줄이야..)

 

버전 정보 bom

https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring- boot-dependencies/build.gradle

  • 각 라이브러리에 대한 버전이 명시되어 있는 것을 확인할 수 있음

 

BOM(Bill of materials)
자재명세서(Bill of materials)란 제품 구성하는 모든 부품들에 대한 목록
부품이 복잡한 요소들로 구성된 조립품 인 경우 계층적인 구조로 작성

 

스프링 부트가 관리하는 외부 라이브러리 버전을 확인하는 방법

Dependency Versions (spring.io)

 

스프링 부트가 관리하지 않는 라이브러리는 버전을 직접 적어주어야 함

 

 

스프링 부트 스타터

스프링 부트는 프로젝트 시작하는데 필요한 관련 라이브러리를 모아둔 스프링 부트 스타터를 제공함

 

  • spring-boot-starter-web 라이브러리가 직접 넣어주었던 모든 라이브러리를 포함함
  • 관련 의존성 세트가 한번에 적용
  • 스타터도 스타터를 가질 수 있음
    • spring-boot-starter-web 스프링과 웹 사용
      • 스프링 웹 MVC, 내장 톰캣, JSON 처리, 스프링 부트 관련, LOG, YML 등
    • spring-boot-starter-data-jpa 스프링과 JPA 사용
      • 스프링 데이터 JPA, 하이버네이트 등

 

스프링 부트 스타터 - 자주 사용

  • spring-boot-starter : 핵심 스타터, 자동구성, 로깅, YAML
  • spring-boot-starter-jdbc : JDBC, HikariCP 커넥션풀
  • spring-boot-starter-data-jpa : 스프링 데이터 JPA, 하이버네이트
  • spring-boot-starter-data-mongodb : 스프링 데이터 몽고
  • spring-boot-starter-data-redis : 스프링 데이터 Redis, Lettuce 클라이언트
  • spring-boot-starter-thymeleaf : 타임리프 뷰와 웹 MVC
  • spring-boot-starter-web : 웹 구축을 위한 스타터, RESTful, 스프링 MVC, 내장 톰캣
  • spring-boot-starter-validation : 자바빈 검증기(하이버네이트 Validator)
  • spring-boot-starter-batch : 스프링배치를 위한 스타터

 

라이브러리 버전 변경

ext['tomcat.version']='10.1.4'

 

 

스프링 부트가 관리하는 외부 라이브러리 버전 변경에 필요한 속성 값 (가끔 문제가 발생함)

Dependency Versions (spring.io)

 

 

 

 

 

 

 

feat. 스프링부트 - 핵심 원리와 활용 (김영한)