백엔드/프레임워크

스프링 - @Aspect

JerryTheSWEngineer 2022. 12. 14. 17:47
반응형

정의


- AOP를 가능하게 하는AspectJ에서 프로젝트에서 제공하는 어노테이션.

- 자동 프록시 생성기는 Advisor를 찾아서 프록시를 생성하고 빈에 적용하는 역할을 수행합니다.

또한 자동 프록시 생성기는 또 다른 역할이 있는데 바로 @Aspect 어노테이션을 찾아서 해당 클래스를 Advisor(Pointcut + Advice)로 만들어줍니다.

 

 

 

 

 

 @Aspect를 Advisor 변환하는 과정


  • 스프링 애플리케이션 로딩 시점에 자동 프록시 생성기 호출
  • 자동 프록시 생성기가 스프링 컨테이너 내 @Aspect 어노테이션 붙은 스프링 빈 모두 조회
  • @Aspect 어드바이저 빌더를 통해 Advisor 생성
  • 생성한 Advisor를 @Aspect 어드바이저 빌더 내부에 저장

* @Aspect 어드바이저 빌더는 BeanFactoryAspectJAdvisorsBuilder 클래스 (@Aspect의 정보를 기반으로 Pointcut, Advice, Advisor를 생성하고 보관하는 것을 담당)

 

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


  • 스프링 빈 대상이 되는 객체 생성
  • 생성된 객체를 빈 저장소에 등록하기 전 빈 후처리기에 전달
  • 스프링 컨테이너 내 Advisor 빈 모두 조회
  • @Aspect 어드바이저 빌더 내부에 저장된 Advisor 모두 조회
  • 조회된 Advisor 내 Pointcut을 통해 프록시 적용 대상 확인
    • 객체의 클래스 정보와 메서드를 Pointcut에 모두 매칭 한 뒤 조건이 하나라도 만족하면 프록시 적용 대상
  • 프록시 적용 대상이라면 프록시 생성 후 프록시 반환
    • 프록시 적용 대상이 아니라면 원본 객체를 반환 해 원본 객체를 스프링 빈에 등록
    • 프록시 적용 대상이라면 원본 객체가 아닌 프록시를 스프링 빈으로 등록

 

 

 

 

 

참고

[SpringBoot] @Aspect 어노테이션 (tistory.com)

 

[SpringBoot] @Aspect 어노테이션

개요 기존에 빈 후처리기에 대해서 알아봤으며 gradle 혹은 pom.xml에 'org.springframework.boot:spring-boot-starter-aop' 라이브러리를 추가하면 AnnotationAwareAspectJAutoProxyCreator라는 자동 프록시 생성기가 스프링

jaimemin.tistory.com

 

반응형