JSON/Jackson

Jackson > Intermediate > TypeIdResolver

Krevis 2023. 11. 13. 23:02

한 서비스에서 잭슨을 이용하여 레디스 캐쉬 서버에 JSON을 저장하고 다른 서비스에서 그것을 읽어야 한다면, 다형성을 지원해야 한다면 결론적으로 TypeIdResolver를 사용해야 한다.

 

저장하는 쪽과 조회하는 쪽의 데이터 모델은 패키지명, 클래스명이 달라질 수 있으니 물리적인 타입 식별자를 사용할 수 없다. (사용 시 예외 발생)

 

다형성을 지원해야 한다면 데이터에 타입 식별자 메타데이터를 추가해야 한다. 앞서 배운 것들을 활용하면 @JsonTypeInfo와 @JsonSubTypes를 명시하는 것이다. 하지만 이를 매번 작성하는 것은 반복적이고 비생산적이다.

TypeIdResolver

위 문제를 해결하기 위해 TypeIdResolver를 이용할 수 있다.

 

단계적으로 테스트로 생각을 검증해보면서 내용을 정리해보았다. 테스트 코드를 순서대로 정독해보자.

 

물리적 타입 식별자 사용 예시: https://github.com/venzersiz/learn-jackson/commit/2a8be06c99a342cd22a90f42cbc2f0ac33ace058

 

논리적 타입 식별자 사용 예시: https://github.com/venzersiz/learn-jackson/commit/956a992052949f57fb92a7bd053919642de6e810

 

실무에 적용 가능한 동적인 논리적 타입 식별자 사용 예시: https://github.com/venzersiz/learn-jackson/commit/ae71255cecff358a0c5b3d82a3c4e66a37de25b6

'JSON > Jackson' 카테고리의 다른 글

Jackson > Basic  (0) 2023.11.10
Jackson > 학습 동기  (0) 2023.11.10