[Kotlin] kotlin 코드 작성히 필수적인 플러그인 - ( kotlin("jvm") , kotlin("plugin.spring") , kotlin("plugin.jpa") )

zero zoo·2024년 9월 22일
0

Kotlin 리팩토링

목록 보기
2/2
post-thumbnail

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("jvm")

Kotlin DSL에서 Kotlin JVM 플러그인을 적용하는 방법입니다.
이 플러그인은 Kotlin 코드를 JVM(자바 가상 머신)에서 실행할 수 있게 해줍니다.
즉, Kotlin 언어로 작성된 코드를 Java와 함께 사용하거나 JVM에서 구동되는 애플리케이션을 작성할 때 필수적으로 사용됩니다.

kotlin("plugin.spring")

Kotlin의 Spring Framework 지원을 위한 플러그인입니다.
이 플러그인은 Kotlin과 Spring을 함께 사용할 때 필요한 기능을 제공하며, Kotlin이 Spring 애플리케이션에서 더 자연스럽게 동작하도록 도와줍니다.

특히, Spring 어노테이션을 인식합니다.
@Component, @Service, @Repository 등의 애노테이션이 있는 클래스에서 open 키워드를 명시하지 않아도 됩니다.

조금 더 자세하게, Kotlin의 클래스는 기본적으로 final 인데, Spring에는 모든 클래스와 메소드가 open이어야 프록시 객체를 생성하여 Bean을 관리합니다. 그런데 plugin.spring 을 적용해주면, 어노테이션이 추가된 클래스에 자동으로 open 키워드를 추가해주기 때문에 kotlin("plugin.spring") 플러그인이 필요한 것입니다.

kotlin("plugin.jpa")

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")가 포함되어 있기 때문입니다.

profile
한방향으로 지그재그

0개의 댓글