Spring Boot - Starters , build.gradle

이정수·2025년 10월 18일

Spring Boot

목록 보기
5/25

Spring Boot Starters
프로젝트에 필요한 여러 라이브러리·프레임워크를 하나의 그룹(Starter)으로 묶어서 의존성 선언단순화해 주는 Spring Boot의 편의 기능
빌드Starter 관련 라이브러리들을 일괄적으로 내려받아 프로젝트에 포함

bulid.gradledependencies {}Starter에 대한 의존성을 정의하여 Applitcation을 Build 시 필요한 Starter를 불러올 수 있음
ctrl + click으로 해당 starter의 내부 dependency 구현을 확인 가능.

build.gradle
gradle을 사용하는 Java 프로젝트빌드 스크립트 파일


구성요소

  • 프로젝트메타데이터
    그룹, 버전
group = 'com.KTCloud'
version = '0.0.1-SNAPSHOT'
description = 'Excercise'
  • plugins : 플러그인
    빌드에 필요한 플러그인을 정의
plugins {
    id 'java'
    id 'org.springframework.boot' version '3.5.6'
    id 'io.spring.dependency-management' version '1.1.7'
}
  • repositories : 원격저장소
    의존성 라이브러리를 가져올 원격저장소 지정 ( Maven Central 등 )
repositories {
    mavenCentral()
}
  • dependencies : 외부 라이브러리 의존성
    프로젝트에서 사용할 스타터, 라이브러리에 대한 의존성을 정의

    MVNRepository
    ▶ 필요한 Starter 또는 라이브러리에 대한 의존성 정보를 가져올 수 있음

    dependency 정의 시 버전을 제외하고 정의하는 경우 plugins에 정의된 버전을 기반으로 통일하여 버저닝
    ex ) id 'io.spring.dependency-management' version '1.1.7'

    의존성 라이브러리 선언 키워드

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    }
    • implementation
      src/main/java소스코드의존성 라이브러리컴파일에서 활용 및 런타임에도 활용하여 빌드파일 ( JAR )에도 포함

    • compileOnly : 컴파일만 수행
      의존성 라이브러리컴파일에서만 활용하고 런타임에는 포함 X
      빌드파일에는 미포함

    • runtimeOnly : 런타임만 수행
      의존성 라이브러리컴파일시에는 사용되지않고, 런타임에서만 사용
      빌드파일패키징되어 포함

    • testImplementation
      src/test/java테스트코드에서 의존성 라이브러리컴파일런타임 시 활용
      JUnit, Mockito 등의 테스트 전용 라이브러리에서 활용

      。 해당 의존성 라이브러리메인 소스코드런타임, 컴파일에서 영향을 주지않음


  • dependencyManagement : 의존성 버전관리
    라이브러리 의존성버전을 통일해서 관리
dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2024.0.0'
    }
}

Spring Cloud의존성버전2024.0.0으로 통일해서 관리

  • task
    。기본 제공 task ( compileJava, test, bootRun 등 )의 동작을 재정의하거나 새 테스크를 정의
tasks.named('test') {
    useJUnitPlatform()
}

Spring Boot Starter
。한 책임을 위한 여러 라이브러리들의 의존성들을 하나의 단위로 통합하여 묶어놓은 Artifact
프로젝트 빌드Starter 관련 라이브러리들을 일괄적으로 내려받아 프로젝트에 자동으로 포함

ex ) spring-boot-starter-web에 대한 의존성을 추가 시
Spring, Spring MVC, Jackson, Tomcat 등의 Transitive Dependency들이 일괄적으로 포함

Starter 종류

Spring Boot 스타터 관련
id 'io.spring.dependency-management' version '1.1.7plugin에 정의하는 경우 Spring Boot Starter의존성이 자동으로 관리

Spring Web : spring-boot-starter-web :
Web Application 개발에 필요한 실행환경을 제공하는 Starter
Spring MVC 구조를 기반으로한 RESTful Application빌드 용도로 사용

REST API를 구축하기위해 필요한 Starter

Spring MVC, Jackson, Tomcat에 대한 Transitive Dependency들을 포함
▶ 기본 내장서버Apache Tomcat 사용
Error Page / Dispatcher Servlet / Spring Bean -> JSON Conversion / Tomcat Server등이 자동으로 Auto Configuration

implementation "org.springframework.boot:spring-boot-starter-web"

Spring Web MVC :
Spring Web Starter에 포함되어 Servlet API를 기반으로 클라이언트요청을 처리하는 모듈
Spring MVC 디자인 패턴을 사용하기위한 여러 구현체들을 포함

spring-boot-starter-validation
@ValidValidation에 필요한 기능 사용 시 정의하는 starter

spring-boot-starter-test
Unit Test를 실행 시 정의하는 starter

spring-boot-starter-hateoas :
REST API 정의 시 필요한 HATEOAS 사용 시 정의하는 starter

spring-boot-starter-data-jpa :
JPA를 활용한 DB Access 시 정의하는 Starter

spring-boot-starter-jdbc :
JDBC를 이용한 DB Access 시 정의하는 Starter

spring-boot-starter-security :
Web Application 또는 REST API보안설정 시 정의하는 Starter

spring-boot-starter-actuator :
Endpoint를 통해 Production 단계Application모니터링하고 관리 시 정의하는 Starter

spring-boot-starter-validation
Client로부터 POST Request로 전송된 <form> 객체 또는 DTO의 데이터에 대한 유효성 검증을 수행.

spring-boot-devtools
Spring BootDevTools 모듈의 기능 제공
▶ 반영 시 java파일에서 코드 수정 시 자동으로 서버가 재실행

Spring Cloud 관련 스타터
의존성 전체에 대한 버전을 명시하기위해 따로 dependencyManagement를 설정

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2024.0.0'
    }
}

spring cloud의존성 버전2024.0.0으로 설정

  • spring-cloud-starter-gateway
  implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

API Gateway 서버 역할의 스프링 프로젝트의존성 정의

  • spring-cloud-starter-netflix-eureka-server
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'

Eureka 서버 역할의 스프링 프로젝트의존성 정의

  • spring-cloud-starter-netflix-eureka-client
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

Eureka 서버마이크로서비스위치정보를 요구할 스프링 프로젝트( ex. API Gateway, 마이크로서비스모듈, ... )에 의존성 정의

profile
공부기록 블로그

0개의 댓글