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