본문 바로가기

개인공부

@어노테이션 만들기!

반응형

 

@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