java/Spring
트랜잭션 프록시
킨글
2024. 4. 23. 21:52
프록시를 사용하면 트랜잭션을 처리하는 객체와 비즈니스 로직을 처리하는 서비스 객체를 명확하게 분리할 수 있다.
트랜잭션 프록시 코드는 아래와 같이 되어 있다.
@Transaction이 적용되어 있는 서비스를 호출하게 되면 EnhancerBySpringCGLIB 이런식으로 클래스 이름이 변경되게 되는데, @Transactional 을 선언하게 되면 스프링에서 약간의 조작을 통해 해당 Service를 상속 받게 된다.
나머지는 스프링 트랜잭션 AOP가 자동으로 처리해준다.
CGLIB 라이브러리를 통해서 프록시를 만들어낸 것이다.
AOP인지 테스트는 AopUtils.isAopProxy()를 통해서 진행할 수 있다.