spring boot에서 object → json, json → object를 변환시 사용되는 라이브러리이다.
test code를 작성하던 중에 위와 같은 에러를 보게되었다. 찾아보니 이 문제는 객체를 json으로 변환할 때 발생한다고 한다. serialize 하기 위해 객체 필드의 접근 제한자가 public이거나 객체에서 public getter/setter를 제공해야하는데 이러한 조건이 지켜지지 않아 문제가 발생하는 것이다.
@Getter
@NoArgsConstructor
public class UserSaveRequestDto {
@NotBlank
@Length(max=30)
private String name;
...
}
하지만 lombok @Getter로 분명히 getter 작성하였는데 왜 이런 문제가 발생하는지 이유를 모르겠다....
해결 방법은 쉽게 찾을 수 있었다. 아래와 같이 private 같은거 상관없이 ObjectMapper 차원에서 모든 필드를 감지할 수 있도록 해주면 된다.
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);