반응형
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;
}
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] @Transactional 핵심 정리 / 우선순위, 프록시, 예외 (0) | 2022.11.26 |
---|---|
[Springboot] 라이브러리 의존성 버전 확인 및 선택하는 방법! dependency version (0) | 2022.03.31 |
[Spring Validation] BindingResult 오류메시지 추가 / properties 파일 / 샘플 코드 (0) | 2022.02.20 |
[Spring Security] 요청 권한 설정 / HttpMethod, url 패턴으로 접근 권한 관리 (0) | 2022.01.21 |
[Springboot] DB migration Tool / Flyway 설정 방법 (0) | 2022.01.19 |
댓글