트랜잭션 적용 확인 @Transactional

wangjh789·2022년 8월 20일
0

[Spring] 스프링-DB-2

목록 보기
12/21
    @Slf4j
    static class BasicService {

        @Transactional
        public void tx() {
            log.info("call tx");
            boolean txActive = TransactionSynchronizationManager.isActualTransactionActive();
            log.info("tx active = {}", txActive);
        }

        public void nonTx() {
            log.info("call None tx");
            boolean txActive = TransactionSynchronizationManager.isActualTransactionActive();
            log.info("tx active = {}", txActive);
        }
    }

TransactionSynchronizationManager.isActualTransactionActive()
위 코드는 현재 로직에 트랜잭션이 걸린 상태인지 확인하며, 트랜잭션 동기화 매니저에서 관련 작업을 했는지를 확인한다.

AopUtils.isAopProxy(basicService)
위 코드는 BasicService 객체가 original 객체인지, 프록시 객체인지 확인하는 코드이다.
스프링은 @Transactional 이 붙은 메서드가 하나라도 있다면 트랜잭션 AOP 프록시를 만들어 스프링 컨테이너에 등록한다.

logging.level.org.springframework.transaction.interceptor=TRACE
다음과 같이 설정하면 트랜잭션 프록시가 호출하는 트랜잭션의 시작과 종료를 명확하게 로그로 알 수 있다.

profile
기록

0개의 댓글