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 프로그래밍 입문
'java > spring' 카테고리의 다른 글
[Spring 디자인 패턴] Spring boot : gradle로 AOP 설정하기 (1) (0) | 2022.03.06 |
---|---|
[spring boot] 에러 Failed to determine a suitable driver class (0) | 2021.12.24 |
[spring] spring project 만들기 (0) | 2021.12.23 |
[spring] 이클립스에 spring boot 설치 (0) | 2021.12.23 |