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에서..
트랜잭션을 위한 어드바이저트랜잭션을 위한 어드바이저는 ProxyTransactionManagementConfiguration에서 등록되는 BeanFactoryTransactionAttributeSourceAdvisor를 통해 생성됩니다. AspectJ로 선언한 어드바이저우선 AspectJ는 @EnableAspectJAutoProxy를 통해 활성화합니다.이후 @EnableAspectJAutoProxy를 통해 등록된 AspectJAutoProxyRegistrar에서 AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(registry)를 통해 org.springframework.aop.config.internalAutoProxyCreator..