Kotlin + Spring Boot 기본 설정

d4v1d·2022년 3월 25일
0

Kotlin

목록 보기
2/4

개요

Kotlin + Spring Boot 프로젝트의 기본 설정을 설명한 포스트입니다. 💂🏻‍♀️

Spring Framework


Spring은 모던한 Java 기반의 (기업 단위) 애플리케이션을 위한 광범위한 프로그래밍과 설정 모델을 제공하는 프레임워크입니다. 개발팀이 배포 환경을 명시하는 것에 얽매이지 않고 애플리케이션 차원의 비즈니스 로직에만 집중할 수 있도록 만들어주는 "인프라" 제공에 초점을 두고 있습니다.

기능

  • Core technologies dependency injection(의존성 주입), events, resources, i18n(internationalization), validation, data binding, type conversion, SpEL(Spring Expression Language), AOP(Aspect Oriented Programming)
  • Testing mock objects, TestContext framework, Spring MVC Test, WebTestClient
  • Data Access transactions, DAO support, JDBC, ORM, Marshalling XML
  • Spring MVC and Spring WebFlux web frameworks
  • Integration remoting, JMS, JCA, JMX, email, tasks, scheduling, cache
  • Languages Kotlin, Groovy, dynamic languages

Tutorial

Spring Boot

Spring Boot는 개발자가 단순히 "실행"하기만 하면 되게끔 도와주는 Spring 기반의 stand-alone, production-grade 애플리케이션을 만들 수 있게 해줍니다.

Kotlin + Spring

참고자료 - StackOverflow

  • .kt Kotlin source code file 👉🏻 컴파일러(kotlinc)에 의해 컴파일되어야 하는 소스 코드 파일
  • .kts Kotlin script file 👉🏻 bash, python처럼 바로 실행될 스크립트 파일

빌드 도구 설정 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()
}

plugin

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"
}

jvm (Java Virtual Machine)

JPA (Java Persistence API)

dependencies

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")
}

Spring Boot DevTools

  • Property Defaults
  • Automatic Restart
  • Live Reload
  • Global Settings
  • Remote Applications

main 함수 실행

/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을 사용했습니다. 빌드 도구에 pluginsdependencies를 설정할 수 있습니다. 🐱

profile
데이터 엔지니어/백엔드 개발자 d4v1d의 개발 일지🐯

0개의 댓글