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 플러그인을 통한 외부 라이브러리 버전 관리 제공
    • 스프링 부트 스타터를 통한 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 기능을 제공

출처 : [인프런 김영한 스프링 부트 - 핵심 원리와 활용]

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%ED%95%B5%EC%8B%AC%EC%9B%90%EB%A6%AC-%ED%99%9C%EC%9A%A9/dashboard

 

스프링 부트 - 핵심 원리와 활용 강의 | 김영한 - 인프런

김영한 | 실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다., 백엔드 개발자를 위한 스프링 부트 끝판왕! 실무에 필요한 내용을 모두 담았습니다.  [임베딩 영상] 김영한의 스

www.inflearn.com