728x90
build.gradle
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'org.jetbrains.kotlin.jvm' version "1.6.21"
}
group = 'com.fastcampus'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
build.gradle.kts
plugins {
id("org.springframework.boot") version "2.7.0"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
id("org.jetbrains.kotlin.jvm") version "1.6.21"
id("java")
//id("org.jetbrains.kotlin.plugin.allopen") version "1.6.21" //코틀린은 모두 상속이 안되기 때문에 해당플로그인으로 allopen 해주어야 한다
kotlin("plugin.spring") version "1.6.21"
//kotlin("plugin.noarg") version "1.6.21"
kotlin("plugin.jpa") version "1.6.21"
}
/*
allOpen {
annotations("org.springframework.boot.autoconfigure.SpringBootApplication"
, "org.springframework.transaction.annotation.Transactional"
)
//항상 패키지를 지정해 주어야하는 단점이 있다.
}
*/
/*
noArg{
annotation("javax.persistence.*")
//엔티티는 noargConstruct 가 있어야 하는데 이를 생성해 준다.
//항상 패키지를 지정해야하는 단점이 있다
}
*/
group = "com.fastcampus"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11
repositories {
mavenCentral()
}
dependencies {
compileOnly("org.projectlombok:lombok:1.18.24")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
- kotlinDSL을 사용해서 만들 수 있는 kts 파일을 사용해, 빌드 환경을 구성할 수 있다.
- 기본적으로 함수로 쓰이기에 ()로 변경만 해주면 비슷하게 사용할 수 있다.
- Spring의 기능을 사용하기 위해서는(@SpringBootApplication과 같은 애노테이션) 보통은 상속이 가능한 클래스인 open클래스여야 하는데 코틀린은 기본적으로 상속이 불가능하게 되어있다.
- 이를 해결하기 위해서는 매번 open 을 붙이는 것이 아닌, allOpen 플러그인을 사용하는 것이다(단, 매번 클래스를 적어줘야 하는 단점이 있기 때문에 코틀린에서는 spring 플러그인을 제공한다)
- JPA 같은 경우 기본적으로 noArgumentConstruct가 존재해야하는데, 이도 역시 noArg라는 플러그인을 제공한다(위와 마찬가지로 매번 클래스를 적어줘야 하는 단점이 있어, 코틀린에서는 jpa 플러그인을 제공한다)
728x90
'실무 프로젝트로 배우는 Kotlin & Spring > JAVA 프로젝트에 코틀린 도입하기' 카테고리의 다른 글
| 코틀린과 롬복 (0) | 2022.11.05 |
|---|---|
| JAVA에서 확장함수 사용하기 (0) | 2022.11.04 |
| JvmStatic을 이용해 정적 함수 호출하기 (0) | 2022.10.23 |
| Kotlin의 예외처리와 JAVA 예약어 접근 방법 (0) | 2022.10.23 |
| Getter, Setter 호출하기 (0) | 2022.10.23 |