해결된 질문
작성
·
237
0
프록시에 대해서 잘 모르는 상태로 질문드립니다.
앞으로 다른 강의에서 나올 수 있는 내용이지만, 일단 큰 그림을 잡을 수 있게 간단하게 질문드립니다.
이번 강의에서 메소드에 @Transactional
을 붙이면 프록시 객체가 만들어진다고 배웠습니다.
그렇다면 @Transactional
가 붙어있는 메소드 단위로 프록시 객체가 만들어지는 건지, 아니면 Service 클래스 단위로 프록시 객체가 만들어지는 건지 궁금합니다.
예를 들어, Service 클래스에 3개의 메소드가 있다고 가정했을 때, @Transactional
메소드가 2개, 일반 메소드가 1개 있다면, 프록시 객체는 2개가 만들어지는 건가요? 아니면 한 개의 프록시 객체에 두 개의 메소드가 등록되는 건가요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
@Transactional
이 붙어 있는 메소드 단위로 프록시 객체가 만들어지는 것이 아니라, 스프링 프레임워크에서는 보통 클래스 단위로 프록시 객체를 생성합니다. 예를 들어 Service 클래스에 @Transactional
이 붙은 메소드가 여러 개 있더라도, 프록시 객체는 한 개만 만들어지고 해당 프록시 객체 안에서 트랜잭션이 필요한 메소드들을 관리합니다. 따라서 Service 클래스에 @Transactional
메소드가 2개, 일반 메소드가 1개 있을 경우에도 프록시 객체는 한 개만 생성되며, 트랜잭션이 필요한 메소드에서만 트랜잭션 관련 프록시 동작이 수행됩니다.