반응형
@LogExecutionTime 어노테이션(어디에 적용할지 표시 해두는 용도)
@Target(ElementType.METHOD)
@Reltention(RetentionPolicy.RUNTIME)
public @interface LogExecutionTime{
}
실제 Aspect (@LogExecutionTime 애노테이션 달린곳에 적용)
@Component -> bean 등록용
@Aspect -> AoP (프록시) 를 알리는 어노테이션
joinPoint란 @어노테이션 만든거 붙어있는 타겟을 의미한다.
이게 Aspect고 이게 스프링 AOP다... (면접에서 그걸 물어보는 거였군..)
@Componet
@Aspect
public class LogAspect{
Logger logger = LoggerFactory.getLogger(LogAspect.class);
@Around("@annotation(LogExecutionTime"))
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable{
StopWatch stopWatch = new StopWatch();
stopWatch.start();
Object procced = joinPoint.proceed();
stopWatch.stop();
logger.info(stopWatch.prettyPrint());
return proceed;
}
}
반응형
'개인공부' 카테고리의 다른 글
spring boot mybatis (0) | 2020.08.14 |
---|---|
Spring Webflux 이란? (0) | 2020.08.12 |
https certbot 을 이용해 배포하기 (0) | 2020.08.11 |
nohup 사용법. (0) | 2020.08.11 |
Spring mybatis mapper 설정 및 repo 설정 (0) | 2020.08.09 |