- 라이브러리 관리의 어려움
- 처음 프로젝트 생성 시 어떤 라이브러리 사용할 지 선택해야함
- 라이브러리를 선정하면서 버전을 고려하게 되는데, 각 라이브러리별로 참조하는 라이브러리버전 또한 고려해야함
- 즉, 사용하려는 라이브러리가 의존하는 라이브러리 정보까지 파악해야하는 어려움 가짐
- 스프링부트의 라이브러리 편의성
- 어떤 프로젝트를 생성하고자 한다면, 그 프로젝트에 필요한 필수 라이브러리를 버전을 맞춰 자동으로 gradle의존에 주입
- 예를 들어 spring web 프로젝트를 생성시 필요한 tomcat, mvc, json 라이브러리 등을 호환이 가능한 버전으로 추가해줌
- 또한 특정 라이브러리 추가하더라도, 현재 사용되는 라이브러리에서 최적의 버전을 자동으로 맞춤
- plugins
- 간단하게는 gradle에서 사용하는 라이브러리? 플러그인?
- gradle이 사용하는 라이브러리 정도로 이해
- io.spring.dependency-management
- Bom정보를 활용하여 의존성을 주입
- 스프링부트에서는 해당 플러그인을 활용하여 의존성의 버전을 관리함
- 스프링부트가 지원하는 라이브러리에 대해서는 버전을 지정하지 않더라도 스프링부트 버전에 맞는 라이브러리 버전을 의존성으로 주입해줌
- 스프링부트가 지원하지 않는 라이브러리의 경우 버전을 직접 작성해야함 → 예)MyBatis
- Bom
- 자재 명세서(Bill of materials)
- 스프링부트에서 지원하는 라이브러리의 버전을 명시한 파일
- 사용한 스프링부트의 버전을 참고하여 Bom파일에서 사용하는 스프링부트의 버전에 맞는 라이브러리 참고
- 스프링부트 스타터
- 프로젝트를 만들면 많은 라이브러리가 필요하게 됨(tomcat, json 바인더, log 등)
- 개발자 입장에서는 프로젝트를 시작하기 위해 많은 라이브러리를 알고 있어야하고 대중적인 라이브러리를 자동으로 추가해줬으면 하는 생각
- 스프링부트는 이를 위해 특정 프로젝트를 시작하는데 필요한 관련 라이브러리를 모은 스프링부트 스타터 제공
- spring-boot-starter-web의 경우 스프링부트 웹 프로젝트를 시작하려고 하면, 스프링부트 웹과 관련된 필수 라이브러리를 자동으로 추가
- 이름 패턴
- spring-boot-starter-* 형식
- 스프링부트 공식 지원: spring-boot-starter-*
- 스프링부트 지원X: mybatis-spring-boot-starter
- 라이브러리 버전 변경
- 스타터 패키지의 경우 스프링부트에서 테스트를 많이 수행한 신뢰도 높은 라이브러리이지만
- 어쩔 수 없이 버전을 변경하고자 하는 경우도 있음
ext['tomcat.version'] = 10.1.4
형식으로 작성함
- 여기서 ‘tomcat.version’과 같은 변수는 아래 링크 참조
- https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#appendix.dependency-versions.properties