• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.01.16 23:01 작성 23.01.16 23:06 수정 조회수 2k

0

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

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

 

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

 

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

 

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

답변 1

답변을 작성해보세요.

1

안녕하세요. davin111님

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

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

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

감사합니다.