-
4. 스프링 부트 스타터와 라이브러리 관리Spring-Boot/스프링부트 - 핵심 원리와 활용 2023. 5. 15. 15:46
1. 라이브러리 직접 관리
* 라이브러리 관리의 어려움 *
- 어떤 라이브러리를 사용할지 버전은 어떻게할지, 호환 문제를 고민해야 한다.
스프링 부트는 라이브러리들을 편리하게 사용할 수 있게 다양한 기능 제공
- 외부 라이브러리 버전 관리
- 스프링 부트 스타터 제공
2. 스프링 부트 라이브러리 버전 관리
- 개발자는 원하는 라이브러리만 고르고 라이브러리의 버전은 생략해도 된다.
dependency-management 버전 관리
- `io.spring.dependency-management` 플러그인을 사용하면 `spring-boot-dependencies` 에 있는 bom 정보를 참고한다.
- 참고로 `spring-boot-dependencies`는 스프링 부트 gradle 플러그인에서 사용하기 때문에 개발자의 눈에 의존관계로 보이지 않는다..
*참고 - 스프링 부트가 관리하지 않는 라이브러리*
- 스프링 부트가 관리하지 않는 외부 라이브러리도 있다.
- 특히 아직 잘 알려지지 않거나 대중적이지 않은 경우가 그러한데, 이때는 라이브러리의 버전을 직접 적어주어야 한다.
*정리*
- 스프링 부트가 제공하는 버전 관리는 스프링 자신을 포함해서 수 많은 외부 라이브러리의 버전을 최적화해서 관리해준다.
ㆍ이제 개발자는 스프링 부트 자체의 버전만 지정하면 된다.
- 그리고 스프링 부트가 해당 스프링 부트 버전에 맞는 각 라이브러리의 호환성을 테스트 했기 때문에 안전하게 사용할 수 있다. ( 물론 항상 100% 완벽할 수 는 없다. )
3. 스프링 부트 스타터
- `spring-boot-starter-web` 이 라이브러리 하나로 지금까지 직접 넣어 주었던 모든 라이브러리가 포함된다.
- 이것은 사용하기 편리하게 의존성을 모아둔 세트이다.
ㆍ이것을 하나 포함하면 관련 의존성 세트가 한번에 들어온다.
ㆍ스타터도 스타터를 가질 수 있다.
- 스프링과 웹을 사용하고 싶으면 `spring-boot-starter-web`
ㆍ스프링 웹 MVC, 내장 톰캣, JSON 처리, 스프링 부트 관련, LOG, YML 등등
- 스프링과 JPA를 사용하고 싶으면 `spring-boot-starter-data-jpa`
ㆍ스프링 데이터 JPA, 하이버네이트 등등
* 스프링 부트 스타터 - 이름 패턴 *
- `spring-boot-starter-*`
- 쉽게 찾게 도와줌
- 공식 : `spring-boot-starter-*`
- 비공식 : `thirdpartyproject-spring-boot-starter`
ㆍex) `mybatis-spring-boot-starter`
* 스프링 부트 스타터 - 자주 사용하는 것 위주 *
- `spring-boot-starter` : 핵심 스타터, 자동 구성, 로깅, YAML
- `spring-boot-starter-jdbc` : JDBC, HikariCP 커넥션풀
- `spring-boot-starter-data-jpa` : 스프링 데이터 JPA, 하이버 네이트
- `spring-boot-starter-data-mongodb` : 스프링 데이터 몽고
- `spring-boot-starter-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'`
'Spring-Boot > 스프링부트 - 핵심 원리와 활용' 카테고리의 다른 글
6. 외부설정과 프로필1 (0) 2023.05.24 5. 자동 구성(Auto Configuration) (0) 2023.05.18 3. 스프링 부트와 내장 톰캣 (0) 2023.05.15 2. 웹 서버와 서블릿 컨테이너 (0) 2023.04.14 1. 스프링 부트 소개 (0) 2023.04.14