self-invocation1 포인트는 왜 안 쌓였을까 — @TransactionalEventListener 함정 파헤치기 들어가며주문 서비스를 개발하면서 이런 코드를 마주치거나 직접 작성한 경험이 있을 것이다.@TransactionalEventListener(phase = AFTER_COMMIT)void onOrderCreated(OrderCreatedEvent event) { pointRepository.save(new Point(event.userId(), event.amount()));} 커밋이 끝난 뒤에 포인트를 적립한다. 트랜잭션이 성공했을 때만 실행되니까 언뜻 완벽해 보인다. 정말 그런지 테스트로 확인해봤다 @Test void AFTER_COMMIT_시점에_Spring_TX_플래그는_아직_true지만_JPA_세션은_이미_커밋됐다() { orderService.createOrder("user-tx.. 2026. 3. 27. 이전 1 다음 반응형