# Spring Boot 프로젝트 Spring Boot는 **빠른 개발과 배포**를 목표로 하는 프레임워크로, Gradle을 사용하면 프로젝트 빌드, 의존성 관리, 테스트 및 배포 자동화가 더욱 효율적이 된다. Spring Boot는 Gradle을 사용하여 다음과 같은 이점을 제공한다. * **빠른 빌드 속도**: Gradle의 캐싱 및 병렬 빌드 기능 덕분에 빌드 시간이 단축된다. * **유연한 빌드 설정**: Kotlin DSL을 사용하여 직관적으로 빌드 스크립트를 작성할 수 있다. * **의존성 관리 용이**: `dependencies` 블록을 활용해 손쉽게 라이브러리를 추가할 수 있다. * **자동화된 빌드 및 테스트**: CI/CD와 연계하여 빌드 및 테스트를 자동화할 수 있다. ## Spring Boot 프로젝트 생성 및 Gradle 설정 Spring Boot 프로젝트를 Gradle 기반으로 생성하려면 **Spring Initializr**를 사용할 수 있다. [Spring Initializr](https://start.spring.io/) 에 접속한 후 다음을 선택한다. - **Project:** Gradle - Kotlin 또는 Gradle - Groovy - **Language:** Java (또는 Kotlin) - **Spring Boot Version:** 최신 안정 버전 - **Dependencies:** 필요한 라이브러리 추가 ### CLI를 사용하여 프로젝트를 생성하는 방법 ```sh curl https://start.spring.io/starter.zip \ -d type=gradle-project \ -d language=java \ -d bootVersion=3.1.2 \ -d dependencies=web,data-jpa,h2 \ -o demo.zip ``` 이후 압축을 풀고 프로젝트 디렉터리로 이동한다. ```sh unzip demo.zip cd demo ``` Spring Boot Gradle 프로젝트의 기본 `build.gradle.kts` 파일은 다음과 같다. ```kotlin plugins { id("org.springframework.boot") version "3.1.2" id("io.spring.dependency-management") version "1.1.3" kotlin("jvm") version "1.8.22" kotlin("plugin.spring") version "1.8.22" } group = "com.example" version = "1.0.0" java.sourceCompatibility = JavaVersion.VERSION_17 repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.h2database:h2") testImplementation("org.springframework.boot:spring-boot-starter-test") } tasks.withType { useJUnitPlatform() } ``` ## 주요 설정 ### 플러그인 설정 ```kotlin plugins { id("org.springframework.boot") version "3.1.2" id("io.spring.dependency-management") version "1.1.3" kotlin("jvm") version "1.8.22" kotlin("plugin.spring") version "1.8.22" } ``` - `org.springframework.boot` → Spring Boot 플러그인 적용 - `io.spring.dependency-management` → 의존성 자동 관리 - `kotlin("jvm")` → Kotlin JVM 환경 설정 - `kotlin("plugin.spring")` → Spring Boot와 Kotlin 호환성 플러그인 ### 의존성 관리 ```kotlin dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") runtimeOnly("com.h2database:h2") testImplementation("org.springframework.boot:spring-boot-starter-test") } ``` - `implementation` → 실행 시 필요한 라이브러리 - `runtimeOnly` → 실행할 때만 필요한 라이브러리 (예: H2 데이터베이스) - `testImplementation` → 테스트 코드에서만 사용하는 라이브러리 ### 저장소 설정 ```kotlin repositories { mavenCentral() } ``` Maven Central 저장소에서 필요한 라이브러리를 가져온다. ### 테스트 설정 ```kotlin tasks.withType { useJUnitPlatform() } ``` **JUnit 5** (JUnit Platform) 기반의 테스트를 실행하도록 설정 ## Gradle 태스크 ### 애플리케이션 실행 ```sh ./gradlew bootRun ``` Spring Boot 애플리케이션을 실행한다. ### 빌드 및 실행 가능한 JAR 생성 ```sh ./gradlew bootJar ``` `build/libs/` 디렉터리에 실행 가능한 JAR 파일이 생성된다. ```sh java -jar build/libs/demo-1.0.0.jar ``` 생성된 JAR 파일을 실행한다. ### 종속성 확인 ```sh ./gradlew dependencies ``` 프로젝트에 포함된 의존성을 확인할 수 있다. ### 테스트 실행 ```sh ./gradlew test ``` - JUnit 기반 테스트를 실행한다.