서론 현재 배달과 관련 된 토이프로젝트를 진행하고 있다. 토이 프로젝트 링크 Transaction 정리 2. 해결 방법 사실 AspectJ 나, 클래스 내 로직을 AOP로 완전히 묶는 방법등이 있지만, 둘 다 추천하는 방식은 아니다. 그래서 제일 좋은건 Self-Invocaton 이 발생하는 경우 자체를 막는 것이다. 그래서 필자는 OrderTransactionService 라는 별도의 서비스 클래스를 만들었고, 위의 order 나 payment 와 같은 메서드를 해당 서비스로 분리해내었다. @Service public class OrderService { // ... @Transactional public void registerOrder() { orderTransactionService.order()..