Skip to content

코루틴 스코프 만들기

Published: at 오후 02:36

Table of contents

Open Table of contents

백엔드에서 코루틴 만들기

많은 백엔드 프레임워크에서 중단 함수를 기본적으로 지원하고 있습니다.

스프링 부트는 컨트롤러 함수가 suspend로 선언되는 걸 허용합니다. Ktor에서 모든 핸들러는 기본적으로 중단 함수입니다.

따로 스코프를 만들 필요는 거의 없습니다. 그럴 필요가 있다면 (오래된 버전의 스프링을 사용해 작업을 해야할 경우) 다음과 같은 것들이 필요합니다.

@Configuration
public class CoroutineConfiguration {

    @Bean
    fun coroutineDispatcher(): CoroutineDispatcher = Dispatchers.IO.limitedParallelism(5)

    @Bean
    fun coroutineExceptionHandler() =
        CoroutineExceptionHandler { _, throwable ->
            FirebaseCrashlytics.getInstance().recordException(throwable)
        }

    @Bean
    fun coroutineScope(
        coroutineDispatcher: CoroutineDispatcher,
        coroutineExceptionHandler: CoroutineExceptionHandler
    ) = CoroutineScope(
        SupervisorJob() + coroutineDispatcher + coroutineExceptionHandler
    )
}

생성자를 통해 커스텀하게 만들어진 스코프를 클래스로 주입되는 방법이 가장 많이 사용됩니다.

스코프는 한 번만 정의되면 수많은 클래스에서 활용될 수 있으며, 테스트를 위해 다른 스코프로 쉽게 대체할 수도 있습니다.