목록 보기
Spring Boot 버전업 중 알게된 Java 버전별 캡슐화 정책 강화
백엔드

Spring Boot 버전업 중 알게된 Java 버전별 캡슐화 정책 강화

마켓컬리
마켓컬리
2024년 12월 6일

두줄요약

Spring Boot와 Java 버전업 과정에서 Gson 직렬화 에러의 원인을 자바 모듈 시스템 변화로 분석했습니다. `LocalDateTime`에 Custom TypeAdapter를 적용해 리플렉션 문제를 우회하고 해결했습니다.

문제 상황

  • Spring Boot, Java, Gson 버전업 이후 로그인 과정의 Redis 직렬화에서 InaccessibleObjectException 발생
  • LocalDateTime 내부 private 필드에 리플렉션 접근 시도, 자바 17의 강한 캡슐화와 충돌

원인 분석

  • Gson 기본 직렬화가 ReflectiveTypeAdapterFactorysetAccessible(true) 기반 리플렉션에 의존
  • 자바 9의 모듈 시스템 도입, 자바 16의 기본 차단, 자바 17의 JEP 403 적용으로 JDK 내부 접근 제한 강화

해결 방법

  • LocalDateTime용 Custom TypeAdapter 구현으로 기본 리플렉션 경로 우회
  • 직렬화는 ISO 포맷 문자열로 쓰고, 역직렬화는 동일 포맷으로 파싱

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...