Kotlin + Spring Boot 프로젝트의 기본 설정을 설명한 포스트입니다. 💂🏻♀️
Spring은 모던한 Java 기반의 (기업 단위) 애플리케이션을 위한 광범위한 프로그래밍과 설정 모델을 제공하는 프레임워크입니다. 개발팀이 배포 환경을 명시하는 것에 얽매이지 않고 애플리케이션 차원의 비즈니스 로직에만 집중할 수 있도록 만들어주는 "인프라" 제공에 초점을 두고 있습니다.
기능
WebTestClient
Spring Boot는 개발자가 단순히 "실행"하기만 하면 되게끔 도와주는 Spring 기반의 stand-alone, production-grade 애플리케이션을 만들 수 있게 해줍니다.
빌드 도구 설정 build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
id("org.springframework.boot") version "2.6.4"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.10"
kotlin("plugin.spring") version "1.6.10"
kotlin("plugin.jpa") version "1.6.10"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-mustache")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "17"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
Kotlin 프로젝트에서 사용할 플러그인과 버전을 명시한 레이블입니다. 예제에서는 비교적 최신 버전의 프레임워크를 사용했습니다.
plugins {
// spring boot를 사용하기 위한 플러그인
id("org.springframework.boot") version "2.6.4"
// spring 관련 dependency 버전 관리를 일괄적으로 해주는 플러그인
id("io.spring.dependency-management") version "1.0.11.RELEASE"
// kotlin(<...>)는 id("org.jetbrains.kotlin.<...>")와 동일!
// 타겟 플랫폼: jvm
kotlin("jvm") version "1.6.10"
// spring boot를 사용
kotlin("plugin.spring") version "1.6.10"
// JPA (Java Persistence API)
// Java 진영에서의 ORM 기술 표준으로 사용되는 인터페이스 모음
kotlin("plugin.jpa") version "1.6.10"
}
dependencies {
// spring boot JPA 이용
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
// mustache(코드 템플릿 엔진, MVC 구현)
implementation("org.springframework.boot:spring-boot-starter-mustache")
// Reflection (runtime에서 프로그램의 구조(객체, 함수, 프로퍼티)를 분석)
implementation("org.jetbrains.kotlin:kotlin-reflect")
// Kotlin 필수 기능 제공 (let, apply, use, syncronized, ...)
// 문자열, IO 관련 함수 등
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
// 여러 개발 툴 제공
developmentOnly("org.springframework.boot:spring-boot-devtools")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
/src/main/kotlin/com.example.{패키지명}/KotlinTestApplication.kt
IntelliJ를 이용해 프로젝트를 시작했다면 위 경로에 코드가 자동으로 생성되어 있습니다!
package com.example.kotlin_test
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class KotlinTestApplication
fun main(args: Array<String>) {
runApplication<KotlinTestApplication>(*args)
}
Kotlin + Spring Boot를 사용하기 위해서는 먼저 빌드 도구를 설정해야 하며, 이 포스트의 예시에서는 gradle을 사용했습니다. 빌드 도구에 plugins과 dependencies를 설정할 수 있습니다. 🐱