Function types코틀린은 함수를 다루는 선언에 (Int) -> String과 같은 함수 타입을 사용한다. val onClick: () -> Unit = ...이러한 타입은 함수의 시그니처(매개변수와 반환 값)에 해당하는 특별한 표기법을 가진다. 모든 함수 타입은 괄호로 묶인 매개변수 타입 목록과 반환 타입을 가진다: (A, B) -> C는 타입 A와 B의 두 인수를 받아 타입 C의 값을 반환하는 함수를 나타내는 타입이다. 매개변수 타입 목록은 () -> A와 같이 비어 있을 수 있습니다. Unit 반환 타입은 생략할 수 없다.함수 타입은 선택적으로 추가 수신자 타입을 가질 수 있으며, 이는 표기법에서 점(.) 앞에 지정된다: A.(B) -> C 타입은 객체 A에서 매개변수 B와 함께 호출할 수 ..
분류 전체보기
public interface Job : CoroutineContext.Element { // ...}Job은 CoroutineContext의 Element를 확장한 객체이다.Job은 백그라운드에서 동작하고 개념적으로 완료 시 종료되는 라이프사이클을 가진 취소 가능한 것이다. 계층 구조의 JobJob은 부모-자식 계층 구조로 배열할 수 있다.이때 부모가 취소되면 모든 자식이 재귀적으로 즉시 취소된다. 그리고 취소 예외(CancellationException)가 아닌 예외가 있는 자식이 실패하면 그 부모와 결과적으로 다른 모든 자식도 즉시 취소된다.이러한 예외의 전파는 SupervisoerJob을 사용하여 예외 전파를 막을 수 있다. Job의 생성Job 인터페이스의 가장 기본적인 인스턴스는 다음과 같..

HandlerMethod 등록스프링에서 requestMappingHandlerMapping이 생성되며 선언한 컨트롤러의 메서드들이 요청처리를 위한 메타정보과 함께 HandlerMethod로 등록된다.public HandlerMethod( String beanName, BeanFactory beanFactory, @Nullable MessageSource messageSource, Method method) { super(method); Assert.hasText(beanName, "Bean name is required"); Assert.notNull(beanFactory, "BeanFactory is required"); this.bean..
SupervisorJob은 자식 Job으로부터 예외를 전파받지 않아 서로 독립적으로 실패할 수 있다.참고로 Supervisor의 뜻은 감독자다 자식 Job이 실패하거나 취소되어도 SupervisorJob이 실패하지 않고 다른 Job의 작업에 영향을 미치지 않는다.SupervisorJob은 자식 Job의 실패를 처리하기 위한 사용자 지정 정책을 구현할 수 있다.launch를 사용하여 생성된 자식 Job의 실패는 컨텍스트에서 CoroutineExceptionHandler를 통해 처리할 수 있다.async를 사용하여 만든 자식 Job의 실패는 결과 지연 값에 대한 Deferred.await을 통해 처리할 수 있다. 상황Job자식 코루틴끼리 운명을 같이 해야 하는 경우Job()자식 중 하나가 실패해도 다른 작업..
새 코루틴의 범위를 정의한다.코루틴을 생성하기 위한 명세서이다. 모든 코루틴 빌더(예: launch, async 등)는 코루틴 스코프의 확장이며, 코루틴 컨텍스트를 상속받아 모든 요소와 취소를 자동으로 전파한다.public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> Unit ): Job { // 기존의 컨텍스트와 합쳐진 새로운 컨텍스트 val newContext = newCoroutineContext(context) ..
기존 AbstractPlatformTransactionManager에서의 이벤트 발행AbstractPlatformTransactionManager를 사용하는 경우 commit을 수행하는 과정에서 TransactionSynchronizationUtils의 메서드를 활용하여 @TransactionalEventListener에게 이벤트를 전달합니다.조금 더 구체적으로는 TransactionSynchronizationManager.getSynchronizations()을 통해 해당 트랜잭션에서 등록된 synchronizations을 조회하고 synchronization에 등록된 콜백을 실행하는 방법으로 이벤트를 전달합니다. ReactiveTransactionManager에서의 이벤트 발행하지만 Webflux에서..