Spring/Framework

org.aspectj.runtime.internal.AroundClosure.ProceedingJoinPoint

바람을타고2 2024. 3. 29. 14:35

1. 개요

org.aspectj.runtime.internal.AroundClosure.ProceedingJoinPoint는 AspectJ 프레임워크에서 @Around 어노테이션으로 정의된 어드바이스를 구현할 때 사용하는 클래스입니다.

2. 기능

  • Advice 실행:
    • proceed() 메서드를 호출하여 타겟 메서드를 실행합니다.
    • 타겟 메서드 실행 전후로 어드바이스 로직을 실행할 수 있습니다.
  • JoinPoint 정보 제공:
    • getSignature() 메서드를 사용하여 타겟 메서드의 서명 정보를 얻을 수 있습니다.
    • getTarget() 메서드를 사용하여 타겟 객체를 얻을 수 있습니다.
    • getArgs() 메서드를 사용하여 타겟 메서드의 인수를 얻을 수 있습니다.

3. 주요 메서드

  • proceed(): 타겟 메서드를 실행합니다.
  • getSignature(): 타겟 메서드의 서명 정보를 반환합니다.
  • getTarget(): 타겟 객체를 반환합니다.
  • getArgs(): 타겟 메서드의 인수를 반환합니다.

4. 예시

Java
@Aspect
public class MyAspect {

    @Around("execution(* com.example.MyService.*(..))")
    public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
        // 타겟 메서드 실행 전 로직
        Object result = joinPoint.proceed();
        // 타겟 메서드 실행 후 로직
        return result;
    }
}
코드를 사용할 때는 주의가 필요합니다.
content_copy

예시 설명:

  • MyAspect 클래스는 @Aspect 어노테이션으로 Aspect임을 선언합니다.
  • aroundAdvice() 메서드는 @Around 어노테이션으로 어드바이스임을 선언합니다.
  • joinPoint.proceed() 메서드를 호출하여 타겟 메서드를 실행합니다.
  • joinPoint.getSignature() 메서드를 사용하여 타겟 메서드의 서명 정보를 얻을 수 있습니다.
  • joinPoint.getTarget() 메서드를 사용하여 타겟 객체를 얻을 수 있습니다.
  • joinPoint.getArgs() 메서드를 사용하여 타겟 메서드의 인수를 얻을 수 있습니다.

5. 참고 자료