151 lines
4.4 KiB
Markdown
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 기반 테스트를 실행한다.
|
|
|