[AOP] AOP 예시

김민중·2025년 3월 4일

Spring Triangle

목록 보기
9/9

@LogExecutionTime으로 메소더 처리 시간 로깅하기


@LogExecutionTime

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

Aspect

@Component
@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 proceed = joinPoint.proceed();
		
		stopWatch.stop();
		logger.info(stopWatch.prettyPrint());
		
		return proceed;
	}
}

이렇게 하면,

@LogExecutionTime이 붙은 클래스는 Aspect를 적용할 타겟이 되어 성능 측정을 할 수 있다.

이외에도 AOP는 공부할게 정말 많으니 꾸준히 공부해보자.

profile
Anything

0개의 댓글