스프링 부트를 통해 프로젝트 개발 중, 변경사항은 적지만 자주 읽히는 부분에 대해 Cache를 적용
Controller>
public ResponseEntity<ObjectDTO> findAllObject(@RequestParam(value="objectName") String objectName){
CustomObject customObject = new CustomObject();
//~~생략~~
ObejctService.findAllObject(customObject);
//~~생략~~
}
Service>
@Cacheable(value="findAllObject", key="#customObject)
public List<ObjectDTO> findAllObject(CustomObject customObject){
//~~생략~~
}
이랬는데... 호출할때마다 계속 Cache가 안되고 새로 읽어옴.
디버깅 하다보니 Cacheable의 key의 customObject의 주소값이 계속 바뀜(Cause... Controller 호출 시 CustomObject를 신규 생성 하므로...)
즉, @Cacheable 입장에서는 key가 계속 바뀌고 있었음.
--> key 를 CustomObject의 속성값 조합으로 변경하여 Cache 적용

