프레임워크(Framework)/Kopring(Kotlin + Spring)

[Kopring] 코틀린 + 스프링 부트 환경으로 프로젝트 생성하기

잇트루 2023. 6. 27. 02:06
반응형

프로젝트 생성

개발자들 사이에서 코프링이라고 불리는 Kotlin 언어와 Spring 프레임워크를 활용한 프로젝트를 만들어보자. 기존 자바 스프링 프로젝트와 같이 Spring Initializr 또는 IntelliJ에서 프로젝트를 만들 수 있다.

 

간단히 프로젝트를 생성하고 실행하여 웹에서 확인하기 위해 의존성에 Spring Web을 추가하여 만들어보자.

Spring Initializr

https://start.spring.io/에 접속하여 프로젝트를 생성한다.

 

IntelliJ IDEA Ultimate

 

 

코프링 프로젝트 패키지 구조

  • 기본적으로 자바 + 스프링 프로젝트와 같은 패키지 구조를 구성하고 있다.
  • build.gradle.kts는 기존 build.gradle과 같은 역할을 하는 파일이며, 클래스 파일 확장자가 .kt로 구성되어 있는 것을 알 수 있다.

 

 

Build.gradle.kts

기본적으로 자바 스프링의 Build.gradle과 비슷한 구조로 되어 있으나 약간의 차이점이 존재한다. 코틀린은 자바와 상호 운용이 가능하기 때문에 자바와 관련된 몇 가지 설정이 추가되어 있다.

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "3.1.1"
    id("io.spring.dependency-management") version "1.1.0"
    kotlin("jvm") version "1.8.22"
    kotlin("plugin.spring") version "1.8.22"
    kotlin("plugin.jpa") version "1.8.22"
}

group = "com.kopring"
version = "0.0.1-SNAPSHOT"

java {
    sourceCompatibility = JavaVersion.VERSION_17
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs += "-Xjsr305=strict"
        jvmTarget = "17"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}
  • 스프링 부트 3.0부터는 Java 17을 기본으로 설정하게 되어 있어 jvmTarget이 17로 설정되어 있다.

 

Application.kt

애플리케이션 클래스 파일 확장자가 .kt로 구성되어 있으며 내부 코드도 코틀린 언어의 문법을 따르고 있다.

@SpringBootApplication
class ExampleApplication

fun main(args: Array<String>) {
    runApplication<ExampleApplication>(*args)
}

 

 

프로젝트 실행

프로젝트 생성 후 실행하면 실행 결과를 웹에서 확인할 수 있다.

 

웹 브라우저에서 localhost:8080에 접속하면 다음과 같은 화면을 확인할 수 있다.

 

 

Controller 작성

이제 HelloController를 작성하여 웹 브라우저에 텍스트를 띄워보자.

HelloController

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController {

    @GetMapping("/")
    fun hello(): String {
        return "Hello Kopring!"
    }
}

 

애플리케이션을 다시 실행하여 웹 브라우저에 localhost:8080에 접속하면 결과를 확인할 수 있다.

반응형