프로그래밍
Spring AOP 의 JoinPoint 에서 class name, method name 얻는 방법
대도루피
2024. 6. 19. 16:45
반응형
AOP 에서 classname 을 얻는 방법은 간단합니다.
처음에 Proxy name 을 가져와서 조금 찾아보다가 다음에 잊어버리지 않기 위해 정리해봅니다.
@Around("controllerPointcut()")
public Object ctrlAround(ProceedingJoinPoint joinPoint) throws Throwable {
String className = joinPoint.getSignature().getDeclaringTypeName();
String simpleClassName = className.substring(className.lastIndexOf(".") + 1);
String methodName = joinPoint.getSignature().getName();
String title = simpleClassName + "." + methodName;
long startMillis = System.currentTimeMillis();
LoggerFactory.getLogger(title).info("[START]");
// 메서드 실행
Object rtn = joinPoint.proceed();
LoggerFactory.getLogger(title).info("[END] {} ms", (System.currentTimeMillis() - startMillis));
return rtn;
}
위 코드에서와 같이 joinPoint.getSignature().getDeclaringTypeName() 을 통해 전체 package 경로를 받아 온 후 substring을 통해 뒤에만 잘라서 사용 하면 됩니다.
메소는 명은 별도로 getSignature().getName()을 통해서 얻을 수 있습니다.
반응형