인프런 커뮤니티 질문&답변

IL님의 프로필 이미지
IL

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 트랜잭션 전파7 - REQUIRES_NEW

@Aspect 와 @Transactional

작성

·

534

0

강의를 듣던중 궁금한 부분이 생겨 질문남깁니다

@Transactional 어노테이션을 표기함으로써 해당 클래스의 프록시가 생성되고, AOP 또한 pointcut에 해당하는 클래스의 프록시를 생성해주는 것으로 알고 있습니다.

여기서 궁금한 점이 있습니다.

만약 @Transactional 과 aop 설정을 같은 메서드에 걸어준다면 어떤 형태로 프록시가 생성되는 걸까요?

먼저 @Transactional 관련 프록시가 생성된다음, aop에서 앞서 만들어진 프록시를 대상으로 새로운 프록시를 또 만들어 컨테이너에 넣어주는 것 일까요?

질문드린 것과 같이 생각하며 공부하던 중,
@Transactional(readonly = true)를 적용하면 aop 코드에서 트랜잭션 관련 설정을 하지 않았음에도 해당 트랜잭션이 그대로 이어져 aop에서도 readonly 가 true 설정되어 있음을 확인하였고, 이러한 상황이 이해가 가지 않아 질문드리게 되었습니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. IL님

프록시를 계속 만들면 아무래도 성능과 효율 모든 관점에서 떨어지겠지요?

그래서 결론부터 말씀드리면 프록시는 하나만 만들어서 사용합니다^^ 그리고 그 프록시 안에서 다음 AOP들을 찾아서 호출하는 것이지요.

자세한 내용은 스프링 핵심원리 - 고급편에서 자세히 말씀드리니 참고해주세요^^

감사합니다.

IL님의 프로필 이미지
IL

작성한 질문수

질문하기