Spring/[인프런 김영한 스프링 부트 - 핵심 원리와 활용]
[인프런 김영한 스프링 부트 - 핵심 원리와 활용] 스프링 부트 스타터와 라이브러리 관리
h2boom
2024. 12. 30. 18:34
스프링 부트 스타터와 라이브러리 관리
- 스프링 부트는 라이브러리들을 편리하게 사용할 수 있는 기능을 제공한다.
- 외부 라이브러리 버전 관리
- 스프링 부트 스타터 제공
dependencies {
//1. 라이브러리 직접 지정
//스프링 웹 MVC
implementation 'org.springframework:spring-webmvc:6.0.4'
//내장 톰캣
implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.5'
//JSON 처리
implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.1'
...
}
...
- 라이브러리 직접 선택 build.gradle 예시
- 라이브러리 직접 선택 시 발생하는 문제
- 수 많은 라이브러리를 알아야하며 버전까지 선택해야 한다.
- 각 라이브러리들 간에 서로 호환이 잘 되는지 여부까지 고려해야 한다.
- 라이브러리 직접 선택 시 발생하는 문제
스프링 부트 라이브러리 버전 관리
- 스프링 부트를 사용하면 라이브러리의 버전을 직접 관리해준다.
- 원하는 라이브러리만 고르고 버전은 생략해도 된다.
- 스프링 부트에 맞는 최적화된 라이브러리 버전을 선택해준다.
- 버전관리 기능을 사용하기 위해서 build.gradle의 plugins에 io.spring.dependency-management 플러그인을 추가해줘야 한다.
plugins {
id 'io.spring.dependency-management' version '1.1.0'
...
}
dependencies {
//스프링 웹, MVC
implementation 'org.springframework:spring-webmvc'
//내장 톰캣
implementation 'org.apache.tomcat.embed:tomcat-embed-core'
//JSON 처리
implementation 'com.fasterxml.jackson.core:jackson-databind'
...
}
- io.spring.dependency-management 플러그인 build.gradle 추가
- 플러그인을 추가함으로 라이브러리들을 선택할 때 버전은 생략할 수 있다.
- dependency-management 버전 관리 : 스프링 부트가 제공하는 버전 관리로 spring-boot-dependencies에 있는 bom 정보를 참고한다.
- spring-boot-dependencies는 스프링 부트 gradle 플러그인에서 사용하기 때문에 개발자 눈에 의존관계로 보이지는 않는다.
- 스프링을 포함한 많은 외부 라이브러리 버전을 최적화해서 관리해주기에 스프링 부트 버전만 지정하면 된다.
- 버전 정보 bom : 각 스프링 부트 버전별로 각각 라이브러리에 대한 버전이 명시되어 있다.
- 스프링 부트가 관리하지 않는(대중적이지 않은) 라이브러리의 경우 라이브러리 버전을 직접 적어줘야 한다.
- ex) implementation 'org.yaml:snakeyaml:1.30'
스프링 부트 스타터
- 스프링 부트 스타터 : 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 기능
dependencies {
//3. 스프링 부트 스타터
implementation 'org.springframework.boot:spring-boot-starter-web'
...
}
- 스프링 부트 스타터 build.gradle에 추가
- 스프링 부트 스타터는 사용하기 편리하게 의존성을 모아놓은 세트와 같다.
- 스프링과 웹을 사용하고 싶으면 spring-boot-starter-web
- ex) 스프링 웹 MVC, 내장 톰캣, JSON 처리, 스프링 부트 관련, LOG, YML 등등
- 스프링과 JPA를 사용하고 싶으면 spring-boot-starter-data-jpa
- ex) 스프링 데이터 JPA, 하이버네이트 등등
- 스프링 부트 스타터 이름 패턴
- 스프링 부트에서 지원하는 공식 스타터 패턴 : 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-data-redis : 스프링 데이터 Redis, Lettuce 클라이언트
- spring-boot-starter-thymeleaf : 타임리프 뷰와 웹 MVC
- spring-boot-starter-web : 웹 구축을 위한 스타터, RESTful, 스프링 MVC, 내장 톰캣
- spring-boot-starter-validation : 자바 빈 검증기(하이버네이트 Validator)
- spring-boot-starter-batch : 스프링 배치를 위한 스타터
- 외부 라이브러리 버전을 변경하고 싶은 경우
- ex) ext['tomcat.version'] = '10.1.4' 형식으로 변경할 수 있다.
정리
- 스프링 부트를 사용하면 라이브러리를 편리하게 관리할 수 있다.
- io.spring.dependency-management 플러그인을 통한 외부 라이브러리 버전 관리 제공
- 스프링 부트 스타터를 통한 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 기능을 제공
출처 : [인프런 김영한 스프링 부트 - 핵심 원리와 활용]
스프링 부트 - 핵심 원리와 활용 강의 | 김영한 - 인프런
김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다. [임베딩 영상] 김영한의 스
www.inflearn.com