JoinPoint 사용
Around Advice를 제외한 나머지 Advice 타입을 구현한 메서드는 JoinPoint 객체를 선택적으로 사용할 수 있다. 주의할 점은 JoinPoint를 파라미터로 사용할 때에는 반드시 첫 번째 파라미터로 지정해야 한다는 것이다. 그렇지 않으면 스프링은 익셉션을 발생시킨다.
JoinPoint 인터페이스는 호출되는 대상 객체, 메서드, 전달되는 파라미터 목록에 접근할 수 있는 메서드를 제공하고 있다.
- org.aspectj.lang.Signature getSignature() : 호출되는 메서드에 대한 정보
- Object getTarget() : 대상 객체
- Object[] getArgs() : 파라미터 목록
Signature 인터페이스는 호출되는 메서드와 관련된 정보를 제공하기 위해 다음과 같은 메서드를 정의하고 있다.
- String getName() : 메서드의 이름
- String toLongString() : 메서드를 완전하게 표현한 문장(메서드의 리턴 타입, 파라미터 타입 포함)
- String toShortString() : 메서드를 축약해서 표현한 문장(기본 구현은 메서드의 이름만)
Around Advice의 경우 ProceedingJoinPoint를 첫 번째 파라미터로 전달받는데, ProceedingJoinPoint 인터페이스는 프록시 대상 객체를 호출할 수 있는 proceed() 메서드를 제공하고 있다. ProceedingJoinPoint는 JoinPoint 인터페이스를 상속받고 있으므로 Around Advice 역시 앞서 설명한 메서드와 Signature를 이용하여 대상 객체, 메서드 및 전달되는 파라미터에 대한 정보를 구할 수 있다.
Reference
- 웹 개발자를 위한 Spring 4.0 프로그래밍 (최범균 저)
'Spring' 카테고리의 다른 글
| [Spring] 스프링 AOP(7) - AspectJ 표현식 (0) | 2022.02.20 |
|---|---|
| [Spring] 스프링 AOP(6) - Proxy Target Class (0) | 2022.02.20 |
| [Spring] 스프링 AOP(4) - @Pointcut 어노테이션 (0) | 2022.02.19 |
| [Spring] 스프링 AOP(3) - @Aspect 기반 (0) | 2022.02.19 |
| [Spring] 스프링 AOP(2) - XML 기반 (0) | 2022.02.19 |