전 포스팅에서 나온 @Transactional(propagation = REQUIRES_NEW) 를 사용해서 트랜잭션을 분리한다고 했을 때,
기존 트랜잭션이 걸린 메소드와 같은 클래스안에다 메소드를 작성한다면..?
저 옵션이 무의미해진다.
스프링의 경우 트랜잭션을 적용할 때, 프록시 객체에서 트랜잭션을 관리하는 형태인데 같은 클래스 내의 메소드를 호출하는 경우 프록시를 못타기 때문에 새 트랜잭션을 사용하지 못하게 된다.
따라서, 다른 스프링 컴포넌트 클래스를 생성하여 프록시를 탈 수 있도록 따로 트랜잭션을 수행할 메소드를 호출해야한다.
'트러블슈팅' 카테고리의 다른 글
트랜잭션 범위, 트랜잭션 분리하기 (0) | 2024.02.11 |
---|