BackEnd/Spring Boot

Spring Boot 핵심 기능 2 - 라이브러리 관리

hanseom 2023. 4. 19. 07:00
반응형

  웹 프로젝트를 하나 설정하기 위해서는 스프링 WEB, 내장 톰캣, JSON 처리기, 로거 등 수많은 라이브러리들이 필요하며, 각각의 라이브러리 버전까지 선택해야 합니다. 여기서 문제는 라이브러리들 간 호환성입니다. 

 

  스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공합니다.

  • 외부 라이브러리 버전 관리
  • 스프링 부트 스타터 제공

 

스프링 부트 라이브러리 버전 관리

  스프링 부트는 수 많은 라이브러리의 버전을 직접 관리해줍니다. 버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 합니다.

plugins {
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
    id 'java'
}

 

dependency-management 버전 관리

  io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies에 있는 다음 bom 정보를 참고합니다.

  해당 build.gradle 문서 안에 보면 bom이라는 항목이 존재하며, 각각의 라이브러리에 대한 버전이 명시되어 있는 것을 확인할 수 있습니다. 현재 프로젝트에서 지정한 스프링 부트 버전을 기준으로 나머지 라이브러리들의 버전을 관리합니다.

 

Note. 스프링 부트가 관리하는 외부 라이브러리 버전을 확인하는 방법

https://docs.spring.io/spring-boot/docs/current/reference/html/dependency-versions.html#appendix.dependency-versions.coordinates

 

  스프링 부트가 관리하지 않는 외부 라이브러리의 경우, 다음과 같이 라이브러리의 버전을 직접 적어주어야 합니다.

implementation 'org.yaml:snakeyaml:1.30'

 

스프링 부트 스타터

  스프링 부트는 프로젝트를 시작하는데 필요한 관련 라이브러리를 모아둔 스프링 부트 스타터를 제공합니다. 스프링 부트 스타터는 사용하기 편리하게 의존성을 모아둔 세트입니다.

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'
    //스프링 부트 관련
    implementation 'org.springframework.boot:spring-boot:3.0.2'
    implementation 'org.springframework.boot:spring-boot-autoconfigure:3.0.2'
    //LOG 관련
    implementation 'ch.qos.logback:logback-classic:1.4.5'
    implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0'
    implementation 'org.slf4j:jul-to-slf4j:2.0.6'
    //YML 관련
    implementation 'org.yaml:snakeyaml:1.33'
*/

/*
    //2. 스프링 부트 라이브러리 버전 관리
    //스프링 웹, MVC
    implementation 'org.springframework:spring-webmvc'
    //내장 톰캣
    implementation 'org.apache.tomcat.embed:tomcat-embed-core'
    //JSON 처리
    implementation 'com.fasterxml.jackson.core:jackson-databind'
    //스프링 부트 관련
    implementation 'org.springframework.boot:spring-boot'
    implementation 'org.springframework.boot:spring-boot-autoconfigure'
    //LOG 관련
    implementation 'ch.qos.logback:logback-classic'
    implementation 'org.apache.logging.log4j:log4j-to-slf4j'
    implementation 'org.slf4j:jul-to-slf4j'
    //YML 관련
    implementation 'org.yaml:snakeyaml'
*/

    //3. 스프링 부트 스타터
    implementation 'org.springframework.boot:spring-boot-starter-web'
}
  • 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 : 스프링 배치를 위한 스타터

 

  스프링 부트 스타터의 전체 목록은 다음 공식 메뉴얼을 참고합니다.

 

라이브러리 버전 변경

  외부 라이브러리의 버전을 변경하고 싶을 때는 다음과 같은 형식으로 편리하게 변경할 수 있습니다.

ext['tomcat.version'] = '10.1.4'

 

  스프링 부트가 관리하는 외부 라이브러리 버전 변경에 필요한 속성 값은 다음 공식 메뉴얼을 참고합니다.

 

[참고정보]

스프링 부트 - 핵심 원리와 활용

반응형