@Transactional
메서드가 실행되는 과정
Spring에서 @Transactional
이 선언된 메서드를 실행할 때, 내부적으로 TransactionAspectSupport
의 invokeWithinTransaction
메서드가 호출됩니다.
// spring-tx 6.1.6 기준
// This is an around advice: Invoke the next interceptor in the chain.
// This will normally result in a target object being invoked.
retVal = invocation.proceedWithInvocation();
해당 메서드의 392번 라인에서 invocation.proceedWithInvocation()
을 호출하며, 트랜잭션이 적용된 메서드가 실행됩니다.
이때 주석에서 설명하는 것과 같이 해당 메서드에 적용된 인터셉터가 순차적으로 실행됩니다.
AOP 역시 인터셉터로 이 과정에서 수행됨을 의미합니다.
commitTransactionAfterReturning(txInfo);
이후 426번 라인에서 commitTransactionAfterReturning(txInfo)
가 실행되면서 트랜잭션이 커밋됩니다.
즉, 메서드 실행 시 AOP가 먼저 실행되고, 이후 트랜잭션 커밋이 진행됨을 확인할 수 있습니다.
'스프링' 카테고리의 다른 글
트랜잭션을 위한 프록시 객체와 AspectJ의 프록시 객체는 어떤 순서로 실행될까? (0) | 2025.03.18 |
---|---|
내가 이해한 스프링의 빈 생명 주기 (0) | 2025.03.17 |
Parallel Test Execution (0) | 2025.03.13 |
Spring Modulith Scenario (0) | 2025.03.10 |
@EnableJpaRepositories (0) | 2025.03.03 |