이번에는 코프링이다!
이번 프로젝트는 kotlin + spring으로 결정했습니다.
익숙한 nodejs를 선택하지 않은 이유는 2가지가 있습니다.
- 새로운 걸 할때가 되었다.
- 동료중에 코틀린 좀 치는 분이 계시다.
자바 + Spring은 경험했었지만, 코틀린은 처음이라 기대 반 걱정반입니다.
코틀린으로 시작해보자
기본 문법은 가법게 책과 동영상으로 익히고 바로 spring을 접해보기로 했습니다.
spring 기본 설정 프로젝트 생성하기
Spring initializer 를 통해서 프로젝트를 생성하거나, 아래와 같은 curl 명령어를 이용해서 파일을 다운 받을 수 있습니다.
$ mkdir blog && cd blog
$ curl https://start.spring.io/starter.zip -d language=kotlin -d type=gradle-project-kotlin -d dependencies=web,mustache,jpa,h2,devtools -d packageName=com.example.blog -d name=Blog -o blog.zip
아래는 주요 설정을 설명 합니다.
build.gradle.kts
JSR 305 어노테이션 + Spring null 가능성 어노테이션에 대한 Kotlin 지원은 컴파일 시 null 관련 문제를 처리할 수 있는 이점과 함께 Kotlin 개발자에게 전체 Spring Framework API에 대한 null 안전성을 제공합니다.
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs += "-Xjsr305=strict"
}
}
JPA 지연 로딩 처리를 위한 설정
지연 가져오기가 예상대로 작동하도록 하려면 KT-28525에 설명된 대로 엔티티를 열어야 합니다. 이를 위해 Kotlin allopen
플러그인을 사용하겠습니다.
plugins {
...
kotlin("plugin.allopen") version "1.8.0"
}
allOpen {
annotation("jakarta.persistence.Entity")
annotation("jakarta.persistence.Embeddable")
annotation("jakarta.persistence.MappedSuperclass")
}
controller
Hello World를 화면에 출력하는 단순한 REST API 입니다.
@RestController
@RequestMapping("/api/hello")
class Controller() {
@GetMapping("/")
fun findAll() = "Hello World"
}
단순하게 Controller만 생성해보았습니다.
이후 jpa 연계 부터 많은 작업을 해야 하는데, 새롭게 배우는 내용들을 작성해보려고 합니다.