JSON 처리, Jackson 3로 업그레이드!
Spring 7 및 Spring Boot 4에서 Jackson 3이 기본 JSON 처리 라이브러리로 채택됨
Jackson 3은 Java 17+ 지원 및 호환성 변경 사항을 포함하며, 설정 변경 필요
JsonMapper를 사용한 설정, JsonMapperBuilderCustomizer를 통한 커스터마이징, Locale 직렬화 변경 사항에 유의
Jackson 3 설정 변경 및 JsonMapper
Spring 7에서는 Jackson 3을 사용하기 위해 ObjectMapper 대신 JsonMapper를 사용해야 한다. 구체적으로, JsonMapperBuilder를 사용하여 설정을 구성하며, `changeDefaultPropertyInclusion`을 통해 기본 설정을 변경할 수 있다. 따라서, 기존 Jackson 2 설정을 Jackson 3에 맞게 수정해야 하며, Spring Boot 4에서는 `JsonMapperBuilderCustomizer`를 활용하여 설정을 커스터마이징할 수 있다.
Locale 직렬화 변경 및 호환성 문제
Jackson 3으로의 마이그레이션 시 Locale 직렬화 방식의 변화에 주의해야 한다. 구체적으로, `Locale.CHINA`가 Jackson 2에서는 `zh_CN`으로 직렬화되었지만, Jackson 3에서는 `zh-CN`으로 변경되었다. 따라서, Locale 값을 파싱하거나 비교하는 로직에서 호환성 문제가 발생할 수 있으며, LanguageTag 형식을 고려하여 코드를 수정해야 한다.
테스트 코드 작성 및 JacksonTester 활용
Spring Boot 4에서는 @JsonTest 어노테이션과 JacksonTester를 사용하여 JSON 직렬화 및 역직렬화를 테스트할 수 있다. 구체적으로, Person 객체를 정의하고, JsonMapper를 사용하여 객체를 JSON 문자열로 변환한 후, JacksonTester를 통해 역직렬화하여 속성을 검증한다. 따라서, 테스트 코드를 통해 Jackson 3의 동작을 확인하고, 예상치 못한 오류를 방지할 수 있다.