반응형
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
반응형
'웹 개발' 카테고리의 다른 글
시간 기반 UUID 생성(Generate time based UUIDs) (0) | 2020.09.29 |
---|---|
Lombok Annotation (0) | 2020.09.28 |
Java에서 날짜, 시간 제대로 사용하기(LocalDate, LocalTime, LocalDateTime) (0) | 2020.09.22 |
[Maven Error] you need to run build with jdk or have tools.jar on the classpath (0) | 2020.04.08 |
[java] SVG file layer separation (0) | 2020.03.11 |