Advice 의 종류와 사용법 !!

 

1. @Around

가장 널리 사용되는 advice로, 대상 객체의 메서드를 실행 전, 후 또는 익셉션 발생 시점에서 원하는 기능을 삽입할 수 있다.

@Around("execution(public * springframework.com..impl.*Impl.selectArticleDetail*(..))")

 

2. @After

대상 객체의 메서드를 실행하는 도중 익셉션 발생 여부와 상관없이 메서드 실행 후 기능을 실행한다.

@After("execution(public * springframework.com..impl.*Impl.selectArticleDetail*(..))")

 

3. @AfterReturning

대상 객체의 메서드가 익셉션없이 실행된 이후 기능을 실행한다.

@AfterReturning(pointcut = "execution(public * springframework.com..impl.*Impl.selectArticleDetail*(..))", returning = "obj")

 

4. @AfterThrowing

익셉션이 발생한 경우에 기능을 실행한다.

@AfterThrowing(pointcut = "execution(public * springframework.com..impl.*Impl.selectArticleDetail*(..))", throwing = "exception")

 

5. @Before

객체의 메서드 호출 전에 기능을 실행한다.

@Before("execution(public * springframework.com..impl.*Impl.selectArticleDetail*(..))")

 

각 패턴은 '*'을 이용하여 모든 값을 표현할 수 있고 , '..'는 0개 이상이라는 뜻ㅇㅣ다 !!

 

그리고 검색하다보면 ProceedingJointPoint 메서드를 볼 수 있다.

이 메서드는 파라미터로 부터 전달받은 값(?)이며 사용법은

Object result = jointPoint.proceed();

로 매서드를 호출한다.

 

그리고 해당 객체에 대한 정보, 실행되는 메서드에 대한 정보. 메서드를 호출할 때 전달된 인자에 대한 정보는 ProceedingJointPoint 인터페이스에서 메서드를 제공해준다 !

Object getTarget(); // 대상 객체를 구한다.
Signature getSignature(); // 호출되는 메서드에 대한 정보를 구한다.
Object[] getArgs(); // 파라미터 목록을 구한다.

 

 

참고 서적 : 초보 웹 개발자를 위한 스프링 4 프로그래밍 입문

+ Recent posts