[Kotlin] 코프링 시작하기 (Kotlin-Spring)

김희정·2025년 1월 31일
0

Spring

목록 보기
19/19

💎 들어가며

신규 프로젝트에서 일명 코프링(Kotlin-Spring)을 하게 되어, 이 시리즈를 시작하게 되었습니다.

이 시리즈를 작성하면서 코프링을 배워가며, 나아가 가장 간단한 환경 설정부터 개발하면서 자프링과의 장단점 비교, 신규 문법들을 채워나갈 것입니다. 😊


1. 프로젝트 시작

1.1 프로젝트 셋업

새 프로젝트 생성

새 프로젝트 생성

Kotlin-Spring 프로젝트를 할 것이기 때문에 위와 같이 선택했습니다.

  • 언어: Kotlin
  • 타입: Gradle-Kotlin
  • Java Version: 17
  • Spring Boot: 3.4.2

라이브러리 선택

간략한 실습을 위해 Spring Web을 추가하였습니다.

새 프로젝트 생성 - 라이브러리 선택


Lombok 이야기

Java-Spring 을 진행할 때는 무조건 Lombok을 선택했는데, Kotlin-Spring에서는 주로 사용하지 않는다고 합니다. 그 이유는 Kotlin의 Data Class가 롬복에서 지원하는 기능들을 기본적으로 제공해주기 때문입니다.

Data Class를 생성하면 기본적으로 Getter, Setter, toString, HashCode, equals를 제공하고, 적절한 변수 선언(val, var) 및 생성자를 통해 @RequiredArgsConstructor, @Builder를 대체할 수 있습니다.


IntelliJ 플러그인

IntelliJ로 Kotlin 프로젝트를 생성하면 아래의 플러그인이 자동으로 설정됩니다.

IntelliJ 플러그인


자프링, 코프링 뭐가 다를까?

새로운 기술을 대하는 IT인의 올바른 자세 -> "나를 가스라이팅한다"

사실 자프링이나 코프링이나 같은 스프링을 쓰기 때문에 문법적 차이를 제외하고 크게 다를 바 없다고 생각합니다.

새 프로젝트 초기 구성

초기 구성의 차이점을 짚어보자면 아래와 같이 써볼 수 있을 것 같습니다.

  • 폴더명 변경: src/main/java -> src/main/kotlin
  • 확장자 변경: .java -> .kt
  • Gradle 파일 변경: build.gradle -> build.gradle.kts
  • 문법 변경: 문법이 Java 스타일에서 Kotlin 스타일로 대거 변경됩니다.


2. Test Controller 작성

2.1 파일 생성하기

파일 생성하기

파일을 생성할 때, Java 클래스 대신 Kotlin 클래스를 선택해서 생성해야 합니다.


2.2 Hello World!

예시 화면

Hello World

Controller 클래스를 생성하고 간단하게 Hello World를 응답하는 API를 구성해보았습니다.


Kotlin 함수 문법

Kotlin 함수의 기본 문법은 fun 키워드를 통해 정의하며 아래와 같이 쓸 수 있습니다.

fun 함수명 (매개변수): 반환타입 {}

예시 코드

아래의 코드는 함수를 사용하여 API를 만드는 예제 입니다.

package com.example.demo.controller

import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseStatus
import org.springframework.web.bind.annotation.RestController

@RestController
class TestController {
    private val log: Logger = LoggerFactory.getLogger(TestController::class.java)

    // 간결화된 함수문
    @RequestMapping("/test")
    fun hello(): ResponseEntity<String> = ResponseEntity.ok("Hello World!")

    // 전형적인 함수
    @RequestMapping("/test2")
    fun hello2(): ResponseEntity<String> {
        return ResponseEntity.ok("Hello World!")
    }

    // 반환타입이 Any (Object 대체)
    @RequestMapping("/test3")
    fun hello3(): Any {
        return ResponseEntity.ok("Hello World!")
    }

    // 반환 타입이 Void
    @RequestMapping("/test4")
    @ResponseStatus(HttpStatus.OK)
    fun hello4() {
        log.info("Hello World!")
    }
}

아직까지는 Java와 달라진 점이 있다면 함수 문법 정도입니다

  • 반환시 간결화된 Return 문 가능!
  • 반환 타입 Void -> 선언 X
  • 반환 타입 Object -> Any

💎 마치며

이번 포스팅에서는 코프링의 시작을 알리는 프로젝트 생성하기에 대해 다뤄보았습니다.

profile
Java, Spring 기반 풀스택 개발자의 개발 블로그입니다.

0개의 댓글

관련 채용 정보