[삽질일기] Spring Boot Cacheable 삽질 - Java



스프링 부트를 통해 프로젝트 개발 중, 변경사항은 적지만 자주 읽히는 부분에 대해 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 적용   




AD_1