스프링 부트 스타터와 라이브러리 관리
라이브러리 관리의 어려움
- 프로젝트를 시작하면 어떤 라이브러리를 사용할 지 고민하고 선택함
- 각 라이브러리들끼리 호환이 잘되는지 안되는지 알아야해 버전까지 고민해야 함
- 프로젝트 세팅 시간 ⬆️
라이브러리 직접 관리
문제점
- 수 많은 라이브러리를 알아야하고, 버전까지 골라서 선택해야함
- 호환이 잘 안되는 버전도 있음
스프링 부트 라이브러리 버전 관리
스프링 부트가 라이브러리의 버전을 직접 관리해주고, 원하는 라이브러리만 고르고 버전은 생략해도 됨
스프링 부트가 최적화된 라이브러리 버전을 선택해줌
버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 함
dependency-management 버전관리
io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies 에 있는 bom 정보를 참고함 (bom을 여기서 볼 줄이야..)
버전 정보 bom
- 각 라이브러리에 대한 버전이 명시되어 있는 것을 확인할 수 있음
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-web 스프링과 웹 사용
스프링 부트 스타터 - 자주 사용
- 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. 스프링부트 - 핵심 원리와 활용 (김영한)
'다시 웹, 백엔드로 > 스프링' 카테고리의 다른 글
자동 구성 (Auto Configuration) - 2 (0) | 2023.08.24 |
---|---|
자동 구성 (Auto Configuration) - 1 (0) | 2023.08.23 |
스프링 부트와 내장 톰캣 - 2 (0) | 2023.08.17 |
스프링 부트와 내장 톰캣 - 1 (0) | 2023.08.17 |
웹 서버와 서블릿 컨테이너 - 2 (0) | 2023.08.16 |