Dto에서 선언한 List를 Service로직이나 Dao단에서 subList를 이용할 경우가 있습니다.
해당 subList를 통해 특정 길이로 잘라서 아래와 같이 사용하는 경우가 있었습니다.
List<String> dataList = new ArrayList<>();
dataList = dataList.subList(0,5);
subList는 fromIndex, toIndex를 받아 해당하는 크기만큼 리스트를 반환합니다.
해당 값을 Redis로 캐싱할 때 아래와 같은 이슈가 발생했습니다.
Redis deserialization error could not read JSON: cannot construct instance of ` Java util. ArrayList$SubList`
subList로 자르면서 캐싱된 데이터 deserialization하는데 실패했다는? 에러 문구입니다.
아마 최초 1회는 정상 응답이고, 이후 2번째 캐싱된 데이터를 응답할때부터 에러가 발생했습니다.
해결 방안은 간단합니다. 아래와 같이 subList사용하면 해결이 됩니다.
List<String> dataList = new ArrayList<>();
dataList = new ArrayList<>(dataList.subList(0,5));
반응형
'Java' 카테고리의 다른 글
QueryDSL StringTemplate 사용 (0) | 2022.02.23 |
---|---|
[Java-17] 자바 암호화 확장 정책 다운 및 설치 (4) | 2018.05.08 |
[Java-16] Project language level 설정 (0) | 2018.05.07 |
[Java-15] JVM 개념과 구조 (0) | 2017.11.18 |
[Java-14] 어노테이션 (0) | 2017.05.08 |