티스토리 뷰
AOP에 대한 개념과 실전예제를 참고해주세요. 모든 코드는 깃허브에 있습니다.
문제
AOP를 사용하여 domain 패키지 안의 모든 요청에서 파라미터의 타입과 값을 찍으려고 했다. 코드는 다음과 같다.
@Pointcut("execution(* com.motivation.mojaty.domain..web.api..*.*(..))")
private void cut() {}
@Before("cut()")
public void before(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
for(Object obj : args) {
log.info("type = {}", obj.getClass().getSimpleName());
log.info("value = {}", obj);
}
}
하지만 로그가 찍히지 않았다. 왜일까 ?
해결
바로 사용자의 요청을 받는 DTO에 toString을 재정의 하지 않았기 때문이다.
@ToString
문제쪽의 코드를 자세히 보면 Object값을 받아와서 그 값을 그대로 로그에 찍고 있다.
Object[] args = joinPoint.getArgs();
log.info("value = {}", obj);
Object의 값을 보여주는 메서드가 바로 toString()이기 때문에, 사용자의 요청을 받을 DTO에 toString()을 재정의 해주지 않으면 빈 껍데기 값만 보여준다.
'SpringBoot' 카테고리의 다른 글
Spring Boot 나만의 라이브러리 만들어서 프로젝트에 적용해보기 (3) | 2022.12.24 |
---|---|
@NoArgsConstructor 액세스 레벨을 PROTECTED로 하는 이유 (0) | 2022.12.20 |
FCM을 이용해 웹 푸시 알림 API를 구현해보자 (1) | 2022.10.09 |
프론트가 좋아하는 토큰 발급, 가져오는 방법 알아보기 (0) | 2022.10.04 |
특정 URL은 시큐리티 필터 적용을 제외하도록 설정해보자 (2) | 2022.10.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday