disable SerializationFeature.FAIL_ON_EMPTY_BEANS

빙그르·2023년 8월 15일

SPRING

목록 보기
4/9

disable SerializationFeature.FAIL_ON_EMPTY_BEANS

에러 발생 위치 :

String searchUrl = pathUrl +  URLEncoder.encode(objectMapper.writeValueAsString(requestVo), "UTF-8");

스프링 부트에서는 기본적으로 Jackson 라이브러리가 탑재(?)되어있는데 - Serialize 하는 과정에서 접근 제한자가 public이거나 Getter/Setter를 이용하기 때문에 필드가 private로 선언되어있으면 JSON 변환 과정에서 문제가 발생하는 것이였다.

여기서 말하는 Serialize는 무슨 의미일까?

여기서 Serialize 한다는 의미는 변환한다는 의미로 보면 된다.

  • Object to JSON (Serialize)
  • JSON to Object (Deserialize)
  • Custom (요구 사항에 따라 조절)

그래서 해결방안

첫번째 - 실패

  • DTO에 @Getter를 써주지 않아서라 해서 붙여봤는데 안됨

두번째 - 실패

  • DTO 위에 이거 붙여주라 해서 해봄
// private 필드에 접근하도록 설정
@JsonAutoDetect(fieldVisibility = Visibility.ANY)

세번째 - 실패

  • application.yml 수정
spring:
  jackson:
   serialization:
     FAIL_ON_EMPTY_BEANS: false

properties라면

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS = false

네번째 - 성공

  • 소스코드에 직접 설정
// 소스코드에 직접 넣기
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

0개의 댓글