작성
·
486
2
안녕하세요. 강의를 듣다가 궁금증이 생겨 질문드립니다.
이전 강의에서 프록시가 생성되는 과정을 보면
1. @Aspect 애노테이션을 클래스에 선언하고 클래스 안에 @Around로 포인트컷 표현식을 정의하고, @Around가 붙은 메서드로 이제 어드바이스를 정의
2. 스프링 애플리케이션이 초기화 될 때 자동프록시생성기가 @Aspect가 붙은 클래스를 다 찾아서 어드바이저생성
3. 이제 스프링 빈으로 등록될 객체들을 하나씩 불러와서 어드바이저의 포인트컷을 통해 프록시 대상인지 아닌지 확인해서 프록시를 생성하여 스프링 빈으로 등록
으로 이해를 하였는데요.
이번 강의에서 @Aspect 클래스 안에 메서드에
@Around("this(hello.aop.member.MemberService)")
이런식으로 this에 타입을 정의하는데, 초기화 시점에 스프링 빈 대상 객체들을 this 포인트컷 표현식으로 프록시 대상 객체인지 아닌지 확인할 수가 없지 않나요? 왜냐하면 아직 프록시가 생성되기 전인데 어떻게 this(프록시 객체)을 판단할수가 있는건가요?
아니면 모든 빈을 일단 프록시로 만들고 실행시점에 판단하는 방식인가요?
감사합니다.
답변 1
5
안녕하세요. 연어포케님
저도 이 부분은 정확히는 모르겠지만 일단 해당 타입의 빈을 프록시로 만들고 실행시점에 판단할 것 같습니다.
혹시 정확히 아시는 분 있으면 답변 부탁드려요.
감사합니다.