[스프링 핵심 원리와 활용] #5. 스프링 부트 스타터와 라이브러리 관리 #822
Develop-KIM
started this conversation in
동환
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
라이브러리 관리의 어려움
프로젝트를 처음 시작하면 어떤 라이브러리들을 사용할지 고민하고 선택해야 한다.
예시) 스프링 WEB, 내장 톰캣, JSON 처리기, 로거 등등 수 많은 라이브러리를 선택해야 한다. 여기에 추가로 각 라이브러리의 버전까지 고민해야 한다.
더 심각한 문제는 각 라이브러리들끼리 호환이 잘 되는 버전도 있지만 잘 안되는 버전들도 있다.
과거에는 이런 문제들 때문에 처음 프로젝트를 세팅하는데 상당히 많은 시간을 소비했다.
스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다.
라이브러리 직접 관리
프로젝트 설정 순서
lib-start의 폴더 이름을lib로 변경하자.File -> Open -> 해당 프로젝트의
build.gradle을 선택하자. 그 다음에 선택창이 뜨는데, Open as Project를 선택build.gradle
라이브러리 직접 선택시 발생하는 문제
웹 프로젝트를 하나 설정하기 위해서는 수 많은 라이브러리를 알아야 한다. 여기에 추가로 각각의 라이브러리의 버전까지 골라서 선택해야 한다.
여기서 눈에 보이지 않는 가장 어려운 문제는 각 라이브러리들 간에 서로 호환이 잘 되는 버전도 있지만 호환이 잘 안되는 버전도 있다는 점이다.
개발자가 라이브러리의 버전을 선택할 때 이런 부분까지 고려하는 것은 매우 어렵다.
스프링 부트 라이브러리 버전 관리
스프링 부트는 개발자 대신에 수 많은 라이브러리의 버전을 직접 관리해준다.
개발자는 원하는 라이브러리만 고르고 라이브러리의 버전은 스프링 부트가 부트 버전에 맞춘 최적화된 라이브러리 버전을 선택해준다.
버전 관리 기능을 사용하려면
io.spring.dependency-management플러그인을 사용해야 한다.build.gradle
dependency-management 버전 관리
io.spring.dependency-management플러그인을 사용하면spring-boot-dependencies에 있는 다음 bom 정보를 참고한다.참고로
spring-boot-dependencies는 스프링 부트 gradle 플러그인에서 사용하기 때문에 개발자의 눈에 의존관계로 보이지는 않는다.스프링 부트 스타터
일반적으로 많이 사용하는 대중적인 라이브러리들을 포함해서 간단하게 시작하고 싶을 것이다.
build.gradle - dependencies 수정
dependencies { //3. 스프링 부트 스타터 implementation 'org.springframework.boot:spring-boot-starter-web' }spring-boot-starter-web이 라이브러리 하나로 지금까지 우리가 직접 넣어주었던 모든 라이브러리가 포함된다.spring-boot-starter-webspring-boot-starter-data-jpa스프링 부트 스타터 - 이름 패턴
공식:
spring-boot-starter-*비공식:
thirdpartyproject-spring-boot-starterex)
mybatis-spring-boot-starter스프링 부트 스타터 - 자주 사용하는 것 위주
spring-boot-starter: 핵심 스타터, 자동 구성, 로깅, YAMLspring-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: 타임리프 뷰와 웹 MVCspring-boot-starter-web: 웹 구축을 위한 스타터, RESTful, 스프링 MVC, 내장 톰캣spring-boot-starter-validation: 자바 빈 검증기(하이버네이트 Validator)spring-boot-starter-batch: 스프링 배치를 위한 스타터라이브러리 버전 변경
외부 라이브러리의 버전을 변경하고 싶을 때 다음과 같은 형식으로 편리하게 변경할 수 있다.
ext['tomcat.version'] = '10.1.4'Beta Was this translation helpful? Give feedback.
All reactions