Spring

[Spring] 스프링 AOP(5) - JoinPoint

재담 2022. 2. 19. 23:51

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 프로그래밍 (최범균 저)