Java

[subList] Java.Util.ArrayList$SubList Deserialization 이슈 해결

zamezzz 2022. 3. 30. 10:57

 

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