웹 개발

Annotation을 활용한 Spring AOP 활용

노루아부지 2020. 9. 24. 20:31

1. @interface 생성

- 마커용 Annotation 생성

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginExecutionTime {

}
  • @Target: 어디에 쓸 수 있는지 지정
  • @Retention: 이 Annotation의 정보가 언제까지 유효할 것인지 지정

 

 

2. 실제 Aspect 생성(@LogExecutionTime Annotation에 적용)

@Component
@Aspect
@Slf4j
public class LogAspect {
    @Around("@annotation(LogExecutionTime)")
    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
        log.info(joinPoint.getTarget().getClass().getSimpleName() + "START");

        Object proceed = joinPoint.proceed();

        log.info(joinPoint.getTarget().getClass().getSimpleName() + "END");

        return proceed;
    }
}
  • @Around: joinPoint라는 parameter를 받을 수 있는데, 여기서 joinPorint는 @LoginExecutionTime Annotation이 붙어있는 Target method
  • joinPoint.proceed(): Target method의 내용 실행

 

 

728x90
loading