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

myj4513님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 고급편

@Aspect 프록시 - 적용

프록시의 생성시점, 빈등록 시점 질문입니다.

작성

·

379

0

안녕하세요 김영한님.

이번 강의를 듣던중 프록시 생성시점에 대해 이해가 안가는 부분이 있어 질문 드립니다.

다이내믹 프록시는 런타임 시점에 동적으로 프록시를 생성한다고 하셔서, 저는 실제 메서드가 호출되는 시점까지 프록시의 생성을 미루다가 호출이 됐을 때 프록시가 생성이 되고 빈으로 등록 되는거라고 이해를 했었습니다.

하지만 이전 강의에서 어드바이저를 빈으로 등록하고 로그를 출력했을 때 처음 스프링이 실행되면서 모든 스프링 빈을 포인트 컷을 통해 확인하고 적용대상은 프록시로 빈을 등록했던 것 같습니다. 

저는 동적이라는 개념 자체가 호출시점(런타임)에 생성되는 거라고 이해했는데, 스프링이 처음실행될 때 프록시가 자동으로 생성되는 것도 `동적` 이라고 표현하는 건가요? 

답변 1

6

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

안녕하세요. myj4513님

먼저 동적이라는 것은 문맥에 따라 다르게 사용될 수 있습니다. 스프링이 처음 실행될 때 프록시가 자동 생성되는 것도 동적 프록시의 동적을 뜻합니다. 우리가 지금까지 예제에서 동적 프록시 기술을 사용했던 부분이 스프링 빈 등록 시점인 것을 떠올리시면 됩니다.

정리하면 다음과 같습니다.

1. 프록시 생성을 시점: 스프링을 실행하면 스프링 컨테이너와 스프링 빈을 등록하는 시점에 프록시를 생성해서 스프링 빈으로 등록해야 한다. 이 시점에 포인트 컷을 확인해서 프록시를 생성한다.

2. 실행 시점: 프록시에서 해당 메서드가 포인트 컷에 매칭되는지 확인하기 위해 포인트 컷을 확인한다.

감사합니다.

myj4513님의 프로필 이미지

작성한 질문수

질문하기