알아가기/Spring

[Spring] Advice Types inside AOP

XEV 2023. 11. 8. 23:37

 

Advice Types inside AOP 알아보자

 

Before advice: 메서드가 호출되기 전에 실행. ex) 메서드 호출 전에 인증을 수행하거나, 로그를 기록하는 등의 작업을 수행.

@Before("execution(* *.*(..))")
public void beforeAdvice() {
  // 인증을 수행한다.
}

 

 

 

AfterReturning advice: 메서드가 정상적으로 종료된 후 실행. ex) 메서드 호출 결과를 캐싱하거나, 성능 측정을 수행하는 등의 작업을 수행.

@AfterReturning("execution(* *.*(..))")
public void afterReturningAdvice(Object returnValue) {
  // 메서드 호출 결과를 캐싱한다.
}

 

 

 

AfterThrowting advice: 메서드가 예외를 발생시킨 후 실행. ex) 예외를 로그에 기록하거나, 사용자에게 알림을 보내는 등의 작업을 수행.

@AfterThrowing("execution(* *.*(..))")
public void afterThrowingAdvice(Exception ex) {
  // 예외를 로그에 기록한다.
}

 

 

 

After advice: 메서드가 종료된 후 실행. ex) 메모리 누수를 방지하거나, 작업을 종료하는 등의 작업을 수행.

@After("execution(* *.*(..))")
public void afterAdvice() {
  // 메모리 누수를 방지한다.
}

 

 

 

Around advice: 메서드 호출 전후에 원하는 작업을 수행. ex) 메서드 호출 시간을 측정하거나, 메서드 호출 결과를 변화하는 등의 작업을 수행.

@Around("execution(* *.*(..))")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
  // 메서드 호출 시간을 측정한다.

  Object returnValue = joinPoint.proceed();

  // 메서드 호출 결과를 변환한다.

  return returnValue;
}