인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

davin111님의 프로필 이미지
davin111

작성한 질문수

스프링 핵심 원리 - 고급편

매개변수 전달

@target 적용 여부가 애플리케이션 로딩 이후에 결정되는 이유

작성

·

2.1K

·

수정됨

0

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

[질문 내용]
@target 의 동작 방식 자체는 이해가 되는데, @target 이 적용 여부가 애플리케이션 로딩 이후(빈이 모두 생성된 이후)에 결정되어야 하는 이유가 궁금합니다.

 

빈으로 등록될 객체가 생성된 직후, Spring 빈 후처리기가 동작할 때, 그 객체 클래스 및 상속 관계에 있는 클래스들에, 어떤 annotation 들이 달려있는지 판단 가능하다고 생각했습니다.

 

때문에, Spring 이 AspectJ Expression 사용 시 @target 조건만 주고 다른 조건으로 한정하지 않을 때, 모든 빈에 대해 proxy 를 생성하려 시도한다는 점이 잘 이해가 되지 않았습니다.

 

제가 뭔가 놓치고 있는 지점이 있는 것 같은데, 지적 부탁드립니다. 좋은 강의 감사합니다.

답변 1

1

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

안녕하세요. davin111님

@target은 실행 시점에 판단한다는 점 때문입니다.

다만 말씀하신 것 처럼 타입 정보가 있기 때문에 스프링 입장에서는 여러가지 최적화를 통해서 이런 문제를 해결할 수 있을 것 같은데요. 왜 그렇게 하지 않는지는 저도 정확히 모르겠습니다.

관련해서 아시는 분 있으면 답변 부탁드립니다.

감사합니다.

davin111님의 프로필 이미지
davin111

작성한 질문수

질문하기