실무 프로젝트로 배우는 Kotlin & Spring/자바 프로젝트(ToDo프로젝트) 코틀린으로 리팩토링 하기

JAVA 프로젝트에 코틀린 설정 적용

webmaster 2022. 11. 5. 15:54
728x90

JAVA의 build.gradle

plugins {
   id 'org.springframework.boot' version '2.7.0'
   id 'io.spring.dependency-management' version '1.0.11.RELEASE'
   id 'java'
}

group = 'com.fastcampus.kotlinspring'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
   compileOnly {
      extendsFrom annotationProcessor
   }
}

repositories {
   mavenCentral()
}

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   implementation 'org.springframework.boot:spring-boot-starter-web'
   compileOnly 'org.projectlombok:lombok'
   runtimeOnly 'com.h2database:h2'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
   useJUnitPlatform()
}

build.gradle.kts

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

plugins {
    id("org.springframework.boot") version "2.7.0"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version "1.6.21"
    kotlin("plugin.spring") version "1.6.21"
    kotlin("plugin.jpa") version "1.6.21"
}

group = "com.fastcampus.kotlinspring"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    //코틀린에서의 직렬화/역직렬화를 해준다
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    //코틀린에서 필수적으로 들어가는 dependency
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

    runtimeOnly("com.h2database:h2")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
}


tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}

tasks.withType<Test>{
    useJUnitPlatform()
}
  • 이전에 그냥 사용되던 코드를 함수에 넣어주면 된다.
  • 롬복을 제거해서 사용해야 한다.
  • spring플러그인, jpa 플러그인을 사용해 스프링을 기능을 사용하고, jpa의 기본 생성자를 만들지 않고 코틀린에서 사용하도록 한다.
  • jackson-module-kotlin을 사용해 코틀린 코드로 json을 변환하도록 한다.
  • reflect,stdlib 같은 경우 코틀린에서 필수적으로 사용된다.
728x90