[Spring] Multiple CacheManager - 캐시 매니저 여러 개 사용하기 (ehCache + Caffeine)

leeng·2024년 6월 17일
0

프로그램 운영을 하다보니 간혹 한번에 많은 요청이 몰리는 로직 중에 메모리를 많이 사용하는 부분이 있어서 캐시를 적용하기로 했다. 기존에 DB 조회 결과를 캐싱하는 설정이 되어있어서 cacheManager를 하나 더 등록하려고 하니 오류가 발생했다.
그래서 캐시 매니저를 여러 개 등록하는 방법을 서칭해봤는데, 이 방법이 제일 간단하고 사용성도 좋은 것 같아 기록해두려고 한다.

1. ehCache + Caffeine

기존에 ehCache가 적용되어 있는데 나는 Caffeine이 제일 익숙해서 처음에는 Caffeine을 따로 적용하려고 했다.

위와 같이 따로 Config 파일을 설정해주고(기존 config 파일에 추가로 Bean 설정을 해줘도 동작은 하겠지만 관리를 위해 Config 파일 분리)

ehCache config 파일에는 위와 같이 default cacheManager를 등록하는 빈을 추가해준다. 그렇지 않으면 빌드할 때 아래와 같은 오류가 발생한다.

Parameter 0 of method hibernatePropertiesCustomizer in com.kaii.infantApi.config.CacheConfig required a bean of type 'javax.cache.CacheManager' that could not be found

ehCache만 사용했을 때는 스프링이 자동으로 cacheManager를 주입해주는데 Caffeine 캐시를 추가하니 자동으로 주입받지 못하는 것 같았다.

마지막으로 실제 캐시를 사용하는 메서드에서는 cacheName과 cacheManagerName을 잘 적어주면 된다

2. ehCache

막상 Caffeine을 추가하고 나니, 이미 ehcache가 사용되고 있는데 너무 간단한 기능을 위해 굳이 캐시 라이브러리를 하나 더 사용하는 게 적절한 걸까?? 하는 생각이 들어서 ehCache를 사용하도록 다시 수정했다.

ehCache config 파일에 새로운 캐시 매니저를 추가하는 Bean을 등록해주고(이 때는 또 default cacheManager를 등록하는 Bean이 존재하면 안된다.)

그리고 캐시를 사용하는 메서드에서도

cacheManager 설정을 지우고 적용해줘야한다.

간단한 설정이지만 사용해본 적이 없는 ehCache에 여러 개의 캐시 매니저를 등록하다보니 헷갈리는 게 많았었다. 별 거 없는 내용이지만 혹시라도 누군가에게 참고가 되길 바라면서 적어본다.

profile
기술블로그보다는 기록블로그

0개의 댓글