업무를 진행하는 중 @Transactional 어노테이션이 예상대로 롤백되지 않는 경우가 발생하였다. 스프링에서 트랜잭션 매니저 미설정으로 발생한 이슈로 금방 해결하긴 했지만 겸사겸사 그 외 발생할 수 있는 상황에 대해 찾아보고 정리해본다. 프록시 메커니즘으로 인한 문제 (자기 호출)Spring은 기본적으로 프록시 패턴을 사용해 @Transactional을 적용한다. 즉, 트랜잭션 처리는 AOP 프록시 객체에서 관리된다.따라서, 클래스 내부에서 자기 자신의 메서드를 호출할 경우 프록시 객체가 아닌 직접 호출되므로 트랜잭션이 적용되지 않는다.해결책메서드를 다른 빈에서 호출하도록 리팩토링한다또는 AspectJ를 사용한 방식으로 트랜잭션을 설정한다인터페이스가 없는 클래스에서 호출하는 경우, proxy-targ..