본문 바로가기
Spring/AOP

빈 후처리기와 스프링이 프록시를 등록하는 방법

by 정재익 2026. 1. 23.

스프링은 보통 빈이나 컴포넌트스캔으로 대상 객체를 스프링 컨테이너 내부의 빈 저장소에 등록함

근데 객체를 빈 저장소에 등록하기 직전에 객체를 조작하고싶으면 빈후처리기 사용 빈을 생성한 이후 무언가 처리하는 용도로 사용

 

객체 생성이후 @PostConstruct같은 초기화가 발생하기 이전이냐 이후냐에 따라 조절가능

스프링은 빈 후처리기를 통해 프록시를 생성함

 

스프링AOP는 포인트 컷을 사용해서 프록시 적용 대상 여부를 체크

포인트컷은 결과적으로 두 곳에 사용됨

1. 프록시 적용 대상 여부를 체크해서 필요한 곳에만 프록시 적용 (빈 후처리기 - 자동 프록시 생성)

2. 프록시의 어떤 메서드가 호출 되었을 때 어드바이스를 적용할지 판단 (프록시 내부)

 

aop를 빌드글레이들에 등록하면 자동프록시생성기가 빈으로 등록됨

자동으로 프록시를 생성해주는 빈 후 처리기임

 

빈으로등록된 어드바이저들을 자동으로 찾아서 프록시가 필요한곳에 프록시 적용해줌

@Aspect도 자동으로 인식해서 프록시 만들어줌

 

자동프록시생성기의 작동 과정 

1. 생성 - 스프링이 빈 대상의 객체를 생성한다 (빈어노테이션이나, 컴포넌트 스캔 등)

2. 전달 - 빈 저장소에 전달하기 전에 후처리기에 전달한다

3. 모든 어드바이저 조회 - 스프링 컨테이너에서 모든 어드바이저 조회 (어드바이저 먼저 스프링 컨테이너에 집어넣음)

3.2 - 애스펙트 어드바이저 조회 : 에스팩트 어드바이저 빌더 내부 저장된 어드바이저도 조회 

4. 프록시 적용 대상 체크 - 어드바이저안에 포인트컷을 이용해 객체가 프록시 적용대상인지 판단 객체의 모든 메서드중에 하나만 만족해도 프록시 적용 대상임

5. 프록시 생성 - 적용 대상이면 프록시 반환해서 프록시를 빈으로 등록 대상이 아니면 원본 객체를 빈으로 등록

6. 빈 등록 - 반환된 객체는 스프링 빈 등록

 

프록시 자동 생성기는 프록시를 하나만 생성함 프록시 패토리가 생성하는 프록시는 내부에 여러 어드바이저를 포함할수 있기 때문

어드바이저1의 포인트컷만 만족하면 프록시1개 생성 프록시에 어드바이저1만 포함

어드바이저1과 2를 모두 만족하면 프록시1개생성 프록시에 어드바이저 1,2 모두 포함

어드바이저 1,2 모두 만족안하면 프록시 생성 안됨 

'Spring > AOP' 카테고리의 다른 글

스프링 AOP 주의점2 - 프라이빗  (0) 2026.01.23
스프링 AOP 주의점1 - 내부 호출과 대안  (0) 2026.01.23
Aspect  (0) 2026.01.23
프록시팩토리  (0) 2026.01.23
스프링 AOP  (0) 2025.12.13