Web

    [ Kotlin & Spring ] - 스프링 WebFlux

    [ Kotlin & Spring ] - 스프링 WebFlux

    1. 프로젝트 리액터 프로젝트 리액터(Project Reactor)는 리액티브 스트림의 구현체 중 하나로서 스프링의 에코시스템 범주에 포함된 프레임워크 입니다. 리액티브 스트림 사양을 구현하고 있으므로 리액티브 스트림에서 사용하는 용어와 규칙을 그대로 사용하면 됩니다. 이를 사용해서 애플리케이션에 리액티브 프로그래밍을 적용할 수도, 비동기-논블로킹을 적용할 수 있습니다. 또한, 함수형 프로그래밍의 접근방식을 통해 비동기-논블로킹 코드의 난해함을 어느정도 해결합니다. 뿐만 아니라 백프레셔(Backpressure)를 사용해 시스템의 부하를 효율적으로 조절할 수 있습니다. 1-1. 모노와 플럭스 리액터는 리액티브 스트림의 Publisher 인터페이스를 구현하는 모노(Mono)와 플럭스(Flux)라는 두 가지 ..

    [ Kotlin & Spring ] - 리액티브 프로그래밍 (옵저버 패턴, 이터레이터 패턴,  리액티브 스트림)

    [ Kotlin & Spring ] - 리액티브 프로그래밍 (옵저버 패턴, 이터레이터 패턴, 리액티브 스트림)

    1. 비동기 프로그래밍? 비동기 프로그래밍은 그냥 실행 중인 작업이 끝나는 것을 기다리지 않고 바로 반환하는 것을 말합니다. 만약 작업이 끝나면 콜백등으로 다시 쓰레드가 해당 작업을 처리하는 것처럼 말이죠. 사실 저는 프론트앤드 기발을 많이 해봐서 비동기(Asynchronous) 프로그래밍에 매우 익숙합니다. 왜냐하면 FE에서는 UI 애플리케이션의 경우 특정 이벤트가 발생할 경우에 반응하는 동작을 구현해야 하는데 이럴 떄 필수적으로 비동기 프로그래밍을 사용하게 되기 때문입니다. const button = document.querySelector('button'); button.addEventListener('click', event => { button.innerHTML = '~' }); 이런식으로 말이..

    [Kotlin & Spring] - TODO 서비스에 코틀린 도입해서 리팩토링 하기 + Test Double

    [Kotlin & Spring] - TODO 서비스에 코틀린 도입해서 리팩토링 하기 + Test Double

    https://github.com/digimon1740/fastcampus-todo-java GitHub - digimon1740/fastcampus-todo-java Contribute to digimon1740/fastcampus-todo-java development by creating an account on GitHub. github.com 저는 강의에서 제공하는 위 깃허브를 참고해서 코틀린으로 마이그래이션 작업을 시작했습니다. 1. Kotlin DSL을 사용해 빌드 스크립트 마이그레이션 build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") ver..

    [Kotlin & Spring] - 자바 프로젝트에 코틀린 도입하기

    [Kotlin & Spring] - 자바 프로젝트에 코틀린 도입하기

    JvmStatic을 이용해 정적 함수 호출하기 우선 동반 객체와 objet 키워드로 정의된 싱글턴 객체에서 정의된 함수를 코틀린에서 사용하면 자바의 static 메서드와 유사하게 사용할 수 있습니다. package jvmstatic /** * @author ihyeonseo */ class HelloClass { companion object { @JvmStatic fun hello() = "hello!" } } object HiObject { @JvmStatic fun hi() = "hi!" } fun main() { val hello = HelloClass.hello() println(hello) val hi = HiObject.hi() println(hi) } 이렇게 정의된 함수를 자바에서 사용할 ..