트랜잭션
-
private 메서드에 @Transactional이 적용될까?Spring 2024. 4. 2. 15:08
Spring은 AOP를 사용해서 @Transactional 애너테이션을 처리하고, 이 과정에서 동적으로 프록시 객체를 생성한다. 생성된 프록시 객체는 원래의 Bean 객체를 대신해서 호출된다. private 메서드나 private 필드는 해당 클래스에서만 접근 가능하기 때문에 외부에서 접근해서 프록시 객체를 생성할 수 없게 되는 것이다. 그래서 @Transactional 애너테이션을 가지고 있는 private 메서드에 접근하려고 해도 프록시 객체를 생성할 수 없기 때문에 해당 애너테이션을 무시하게 된다. 하지만 @Transactional 애너테이션이 적용된 public 메서드에서 private 메서드를 호출하면 해당 private 메서드에도 Transaction이 적용된다. @Transactional S..