Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

240207 TIL - Cache 본문

TIL

240207 TIL - Cache

Skipalong 2024. 2. 8. 01:01

오늘은 캐시를 적용하면서 겪은 문제에 대한 트러블 슈팅을 정리해보겠다. 우선

서비스 메서드에 @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