kotlin 코드 작성시 필수적으로 필요한 plugin 들을 추가합니다.
그 플러그인들에 대하여 간단하게 정리합니다.
// build.gradle.kts
plugins {
id("org.springframework.boot") version "3.3.0"
id("io.spring.dependency-management") version "1.1.5"
// 코틀린에 필요한 플러그인
kotlin("jvm") version "1.9.24"
kotlin("plugin.spring") version "1.9.24"
kotlin("plugin.jpa") version "1.9.24"
}
Kotlin DSL에서 Kotlin JVM 플러그인을 적용하는 방법입니다.
이 플러그인은 Kotlin 코드를 JVM
(자바 가상 머신)에서 실행할 수 있게 해줍니다.
즉, Kotlin 언어로 작성된 코드를 Java와 함께 사용하거나 JVM에서 구동되는 애플리케이션을 작성할 때 필수적으로 사용됩니다.
Kotlin의 Spring Framework
지원을 위한 플러그인입니다.
이 플러그인은 Kotlin과 Spring을 함께 사용할 때 필요한 기능을 제공하며, Kotlin이 Spring 애플리케이션에서 더 자연스럽게 동작하도록 도와줍니다.
특히, Spring 어노테이션을 인식합니다.
@Component
, @Service
, @Repository
등의 애노테이션이 있는 클래스에서 open
키워드를 명시하지 않아도 됩니다.
조금 더 자세하게, Kotlin의 클래스는 기본적으로 final
인데, Spring에는 모든 클래스와 메소드가 open
이어야 프록시 객체를 생성하여 Bean을 관리합니다. 그런데 plugin.spring
을 적용해주면, 어노테이션이 추가된 클래스에 자동으로 open
키워드를 추가해주기 때문에 kotlin("plugin.spring")
플러그인이 필요한 것입니다.
Kotlin을 사용하여 JPA(Java Persistence API)를 더 잘 통합할 수 있도록 지원하는 플러그인입니다.
이 플러그인은 JPA와 Kotlin의 호환성 문제를 해결하는 데 필요한 기능을 제공합니다.
먼저, kotlin("plugin.spring")
와 비슷하게 JPA 관련 어노테이션(@Entity
, @MappedSuperclass
, @Embeddable
등)이 설정된 클래스에 open
키워드를 추가해줍니다.
또한, Kotlin에서 class 를 선언하여 사용하기 위해서는 생성자가 필요한데, kotlin("plugin.jpa")
플러그인을 사용하면 어노테이션을 이용하여 class를 정의시, 기본 생성자가 자동으로 생성됩니다.
이는 kotlin("plugin.jpa")
에 kotlin("plugin.noarg")
가 포함되어 있기 때문입니다.