Files
gradle-examples/doc/13_spring boot.md
2025-02-22 01:13:24 +09:00

151 lines
4.4 KiB
Markdown

# 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<Test> {
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<Test> {
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 기반 테스트를 실행한다.