본문 바로가기
개발/Spring

[Spring] AOP에서 컨트롤러에서 JSON을 반환하는 지 확인하는 방법 / Class, Method에 특정 어노테이션이 있는지 확인하는 방법

by Allonsy 2023. 7. 14.
반응형

Controller에 들어오는 파라미터와 응답하는 코드를 로그로 남기고, DB에 저장하려고 AOP를 이용했다

 

이때, 컨트롤러에서 데이터를 반환할때 @RestController, @ResponseBody 어노테이션이 있는 경우 JSON 형식으로 반환하는데 이걸 체크하기 위해서 아래 코드를 사용하여 확인했다

 

핵심은 리플렉션을 이용하여 정보를 확인하는 것!

getClass().isAnnotationPresent(RestController.class);

getMethod().isAnnotationPresent(ResponseBody.class);

 

private boolean isJsonReturn(ProceedingJoinPoint joinPoint) {

    // @RestController 인지 확인
    boolean isRestController = joinPoint.getTarget().getClass().isAnnotationPresent(RestContoller.class);
    if (isRestController) return true;
    
    // @ResponseBody 가 Class에 있는지 확인
    boolean hasResponseBodyOnController = joinPoint.getTarget().getClass().isAnnotationPresent(ResponseBody.class);
    if (hasResponseBodyOnController) return true;
    
    // @ResponseBody 가 Method에 있는지 확인
    boolean hasResponseBodyOnMethod = ((MethodSignature)joinPoint.getSignature()).getMethod().isAnnocationPresent(ResponseBody.class);
    if (hasResponseBodyOnMethod) return ture;
    
    return false;
}
반응형

댓글