ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot 핵심 기능 2 - 라이브러리 관리
    BackEnd/Spring Boot 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'

     

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

     

    [참고정보]

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

    반응형

    'BackEnd > Spring Boot' 카테고리의 다른 글

    Spring Boot 핵심 기능 4 - 외부설정(1)  (0) 2023.05.03
    Spring Boot 핵심 기능 3 - 자동 구성(Auto Configuration)  (0) 2023.04.20
    Spring Boot 핵심 기능 1 - 내장 톰캣  (0) 2023.03.25
    REST API  (0) 2022.05.25
    HAL Browser  (0) 2022.05.25

    댓글

Designed by Tistory.