작성
·
534
0
강의를 듣던중 궁금한 부분이 생겨 질문남깁니다
@Transactional 어노테이션을 표기함으로써 해당 클래스의 프록시가 생성되고, AOP 또한 pointcut에 해당하는 클래스의 프록시를 생성해주는 것으로 알고 있습니다.
여기서 궁금한 점이 있습니다.
만약 @Transactional 과 aop 설정을 같은 메서드에 걸어준다면 어떤 형태로 프록시가 생성되는 걸까요?
먼저 @Transactional 관련 프록시가 생성된다음, aop에서 앞서 만들어진 프록시를 대상으로 새로운 프록시를 또 만들어 컨테이너에 넣어주는 것 일까요?
질문드린 것과 같이 생각하며 공부하던 중,
@Transactional(readonly = true)를 적용하면 aop 코드에서 트랜잭션 관련 설정을 하지 않았음에도 해당 트랜잭션이 그대로 이어져 aop에서도 readonly 가 true 설정되어 있음을 확인하였고, 이러한 상황이 이해가 가지 않아 질문드리게 되었습니다.
답변 1
0
안녕하세요. IL님
프록시를 계속 만들면 아무래도 성능과 효율 모든 관점에서 떨어지겠지요?
그래서 결론부터 말씀드리면 프록시는 하나만 만들어서 사용합니다^^ 그리고 그 프록시 안에서 다음 AOP들을 찾아서 호출하는 것이지요.
자세한 내용은 스프링 핵심원리 - 고급편에서 자세히 말씀드리니 참고해주세요^^
감사합니다.