본문 바로가기

프로그래밍

Spring AOP 의 JoinPoint 에서 class name, method name 얻는 방법

반응형

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()을 통해서 얻을 수 있습니다.

 

반응형