Skipalong's tistory
240207 TIL - Cache 본문
오늘은 캐시를 적용하면서 겪은 문제에 대한 트러블 슈팅을 정리해보겠다. 우선
서비스 메서드에 @Cacheable 메서드로 캐시설정을 해주고 요청을 보냈을 때 이런 에러가 났다. 이에 대한 해결법을 찾아보는데
"com.fasterxml.jackson.datatype:jackson-datatype-jsr310" 을 dependency에 추가하면 해결이 된다고 하는데 이미 dependency 중 'org.springframework.boot:spring-boot-starter-web' 에 포함이 되어있는데 에러가 난 것이었다. 그래서 해결법을 찾던 중 직렬화과정중에 LocalDateTime 형식을 지원하지 않는것이 문제인 것 같았다. 그래서 해결법을 찾은것이
이렇게 캐싱하는 데이터중 LocalDateTime 을 사용하는 곳에 @JsonSerialize, @JsonDeserialize 어노테이션을 달아주니 해결이 되었다.
그리고 다시 요청을 보내보니 이번에는
이런 에러가 발생했다. 이번에도 직렬화문제인 것 같았다. 이 문제는 배열 형태의 데이터를 직렬화할 수 없다는 오류인 것 같았다. 그래서 해결법을 다시 찾아보았다. 그리고 반환값이 현재 List<ResponseDto> 형태로 되어있고 이부분을 해결해주어야한다는 것을 찾았다. 그래서 해결 사례를 보니 반환값을 List<ResponseDto> 형태 말고 한번 감싸주어서 반환하면 해결이 된다고 한다.
그래서 코드에 적용시켜보았다.
우선 우리 프로젝트에서는 java17버전에 사용되는 record를 통해 데이터를 반환하고 있다. 그래서 record CourseListWrapper 로 List<CourseListRes> 를 감싸주고
그리고 이렇게 요청을 보냈을 때 쿼리도 날라가지 않는 모습까지 확인을 할 수 있었다. 캐시를 잘쓰면 매우 유용할 것 같다.
이번에 Cache를 사용해보면서 사용법을 배웠는데 캐시를 사용할 때 중요한 것이 캐시를 어떤 메서드에 적용시킬지도 중요하지만 어떤 메서드를 실행할 때 캐시에서 지워줄지도 중요하다고 한다. 그래서 다음엔 캐시를 적절하게 적용시키고 지우는 법을 정리해보겠다.
'TIL' 카테고리의 다른 글
240213 TIL - CacheEvict (0) | 2024.02.14 |
---|---|
240208 TIL - 최종프로젝트 마무리 (1) | 2024.02.09 |
240206 TIL - Cache (1) | 2024.02.07 |
240205 TIL - Cache (1) | 2024.02.06 |
240202 TIL- JWT, AccessToken, RefreshToken (0) | 2024.02.03 |