강의

멘토링

로드맵

Inflearn brand logo image

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

Young.K님의 프로필 이미지
Young.K

작성한 질문수

스프링 핵심 원리 - 고급편

@Aspect 프록시 - 설명

@Aspect 어드바이저 빌더

해결된 질문

작성

·

295

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
안녕하세요 영한님!
몇 가지 궁금한 점이 있어 말씀드립니다!
1. 자동 프록시 생성기가 빈 저장소에 있는 어드바이저 빈들을 조회하기 전에 모든 @Aspect 빈을 조회해서 어드바이저를 생성하여 등록하는 것은 이해가 됐습니다. 근데 그렇게 생성된 어드바이저를 왜 빈 저장소에 넣지 않고 굳이 @Aspect 어드바이저 빌더 내부 저장소에서 따로 관리를 하는 것인지 궁금합니다.
 
2. @Aspect 어드바이저 빌더 내부 저장소에 캐싱이 적용된다고 하셨는데 그렇다는 것은 하나의 @Aspect 빈에서 똑같은 어드바이저를 여러번 생성하는 경우가 발생한다고 이해가 됩니다. 예를 들어 어떤 경우에 캐시에 저장된 어드바이저를 반환하게 되는지 궁금합니다. 혹시나 @Aspect 어드바이저 빌더 내부 저장소의 어드바이저들은 영속성을 가지는 것인지 의문이 드네요.
 
 
/* 아래 질문은 이후 강의인 "스프링 AOP - 어드바이스 순서" 에서 답변이 되었습니다.
 
3. 자동 프록시 생성기로 여러 어드바이저를 적용하는 경우에 각 어드바이저들 간의 작동 순서를 임의로 조정할 수 있는 방법은 없는지 궁금합니다.
*/
 
 

답변 1

2

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

안녕하세요. Young.K님

1. 자동 프록시 생성기가 빈 저장소에 있는 어드바이저 빈들을 조회하기 전에 모든 @Aspect 빈을 조회해서 어드바이저를 생성하여 등록하는 것은 이해가 됐습니다. 근데 그렇게 생성된 어드바이저를 왜 빈 저장소에 넣지 않고 굳이 @Aspect 어드바이저 빌더 내부 저장소에서 따로 관리를 하는 것인지 궁금합니다.

-> 스프링 빈으로 등록하게 되면 기존 빈과 충돌할 수도 있고, 사용자가 해당 빈을 꺼낼 수도 있습니다. 그런데 사실 이 빈을 사용자가 꺼내서 사용할 일은 없지요. 스프링 입장에서는 스프링 빈에 등록해도 얻는 이점이 없기 때문에 빈으로 등록하지 않았을 것이라 생각합니다. 

 

2. @Aspect 어드바이저 빌더 내부 저장소에 캐싱이 적용된다고 하셨는데 그렇다는 것은 하나의 @Aspect 빈에서 똑같은 어드바이저를 여러번 생성하는 경우가 발생한다고 이해가 됩니다. 예를 들어 어떤 경우에 캐시에 저장된 어드바이저를 반환하게 되는지 궁금합니다. 혹시나 @Aspect 어드바이저 빌더 내부 저장소의 어드바이저들은 영속성을 가지는 것인지 의문이 드네요.

-> AOP를 적용할 대상이 10개라면 처음에는 빌더를 통해서 어드바이저를 만들겠지만, 이후에는 이미 만들어진 어드바이저를 재활용하게 됩니다.

감사합니다.

Young.K님의 프로필 이미지
Young.K
질문자

답변 감사합니다!

Young.K님의 프로필 이미지
Young.K

작성한 질문수

질문하기