@Aspect AOP
@Aspect 프록시
스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저를 만들어서 스프링빈으로 등록하면된다.
그러면 나머지는 아ㅠ서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다. 자동 프록시 생성기는 스프링 빈으로 등록된 어드바이저들을 찾고
스프링 빈들에 자동으로 프록시를 적용해준다.
스프링은 @Aspect 어노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구서오디어 있는 어드바이저 생성 기능을 지원한다.
//어드바이저
@Around("execution(* hello.proxy.app..*(..))")//포인트컷
public Object execute(ProceedingJoinPoint joinPoint) throws Throwable{
//어드바이스
TraceStatus status = null;
try{
String message= joinPoint.getSignature().toShortString();
status = logTrace.begin(message);
//로직 호출
Object result =joinPoint.proceed();
logTrace.end(status);
return result;
}catch (Exception e){
logTrace.exception(status, e);
throw e;
}
}
@Aspect 원리
자동 프록시 생성자는 advisor를 만들어주는 것 이외에 하나더 기능이 있는데 @Aspect를 찾아서 이걸 advisor로 만들어준다.
자동 프록시 생성자는 두가지 일을 하는것
- @Aspect를 보고 어드바이저로 변환해서 저장한다.
- 어드바이저를 기반으로 프록시를 생성한다.
@Aspect어드바이저를 변환해서 저장하는과정
- 실행: 스프링 애플리케이션 로딩 시점에 자동 프록시 생성기를 호출한다.
- 모든@Aspect빈 조회 : 자동 프록시 생성기는 스프링 컨테이너에서 @Aspect 애노테이션이 붙은 모든 스프링 빈을 조회한다.
- 어드바이저 생성: @Aspect 어드바이저 빌더를 통해 해당 애노태이션 정보 기반으로 advisor가 생성된다.
- @Aspect기반 어드바이저 저장: 생성한 어드바이저를 빌더 내부에 저장한다.
'Springboot' 카테고리의 다른 글
Spring boot AOP (0) | 2023.08.14 |
---|---|
Spring Data REST (0) | 2023.08.14 |
빈 후처리기 (0) | 2023.08.14 |
프록시 팩토리 (0) | 2023.08.14 |
JDK동적프록시/CGLIB (0) | 2023.08.14 |