@Cacheable 어노테이션을 사용해 메서드의 결과를 캐싱할 때 반환되는 객체가 직렬화(serializable)되지 않아 발생하였다.
@Cacheable(cacheNames = "orderCache", key = "args[0]")
public OrderResponseDto getOrder(Long orderId) {
Order order = orderRepository.findById(orderId)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Order not found"));
return order.toResponseDto();
}
위 메서드의 반환 타입인 OrderResponseDto 객체에 implements Serializable을 붙여 해결한다.
public class OrderResponseDto implements Serializable {
private Long orderId;
private List<Long> productIds;
}