Development/Kotlin&Android

스프링의 코틀린 지원

우봉수 2023. 2. 27. 11:26

1. 공식 문서

https://kotlinlang.org/docs/home.html

2. Spring initializr

  • Kotlin DSL 기반으로 생성해준다
  • 코틀린 스프링 프로젝트에서 필수적인 플러그인
    • kotlin(”plugin.spring”)
  • 코틀린 스프링 프로젝트에서 필수적인 의존성
    • org.jetbrains.kotlin:kotlin-reflect
    • org.jetbrains.kotlin-stdlib
  • 이외에도 plugin.jpa, jackson-module-kotlin 등 프로젝트를 구성하면서 필요한 플러그인과 코틀린 의존성이 있고 Spring initialzr에서 프로젝트를 구성할 경우 자동으로 세팅해준다.

3. 스프링 부트

  • @SpringBootApplication 애너테이션을 통해 사용

4. @ConfigurationProperties

  • 스프링 애플리케이션에 지정한 설정을 기반으로 설정 클래스를 만들때 @ConstructorBinding 을 사용하면 setter가 아닌 생성자를 통해 바인딩 하므로 불변 객체를 쉽게 생성할 수 있다.

5. 테스트 지원

  • 기본 제공되는 Junit5 기반의 테스트를 특별한 설정 없이 그대로 사용이 가능하다
  • 모의 객체를 만들어 테스트하려면 Mockito 대신 MockK를 사용할 수 있다
  • Mockito에서 제공하는 @MockBean, @SpyBean을 대체하는 SpringMockK의 @MockkBean, @SpykBean

6. 확장함수

  • 스프링에서 지원하는 코틀린 API의 대부분은 이러한 확장 기능을 사용해 기존 API에 코틀린 API를 추가
  • 스프링 프로젝트에선 확장함수를 통해 기존 자바 API를 건드리지 않고 쉽게 코틀린 확장 기능을 추가하고 있다.

7. 코루틴

  • 비동기-논블로킹 방식을 선언형으로 구현하기 위한 코틀린 기능
  • 스플링 MVC, 스프링 WebFlux 모두 코루틴을 지원하여 의존성만 추가하면 바로 사용 가능
    • implementation(”org.jetbrains.kotlinx:kotlinx-coroutines-core”)
    • implementation(”org.jetbrains.kotlinx:kotlinx-coroutines-reactor”)
  • 코루틴이 지원되어 비동기-논블로킹 스타일의 구현을 쉽게 할 수 있다.

8 스프링 Fu

  • 스프링 부트 설정을 Java DSL 혹은 Kotlin DSL 방식으로 작성 가능 (아직은 실험적 프로젝트)
  • Java DSL은 JaFu, Kotlin DSL은 KoFu로 부른다