(Spring Boot) No serializer found for class Error

지니·2021년 10월 13일
2

대학생의 일기

목록 보기
13/17

No serializer found for class

여느 때와 같이 DTO를 생성하여 조회 기능을 구현하던 중, 다음과 같은 에러를 만나게 되었다.

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 
No serializer found for class com. ... a
nd no properties discovered to create BeanSerializer 
(to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 
(through reference chain: ...)

(일부는 ... 으로 생략한 상태)

기본적으로 Jackson 2.X 버전에서 public 필드 또는 getter 메소드가 존재하는 필드에만 동작하게 되어있다. 즉, 저 오류가 떴다는 것은 private 필드에 대한 getter 메소드가 없는 경우를 의미한다. 아래와 같은 경우를 의미한다.


ex)

class Temp {
	private Long id;
    private String name;

    public Temp(Long id, String name) {
    	this.id = id;
        this.name = name;
    }
}



해결 방법

private 필드에 대한 Getter를 생성해준다.

또한, 여기(오류 해결 시 참고한 블로그) 에 다양한 해결 방법이 있다. 하지만 private 필드 + Getter 사용 조합을 하지 않는 이상 필드를 public으로 두겠다는 이야기가 되므로 개인적으로는 Getter를 붙여주는 것이 가장 좋은 방법인 것 같다.

profile
Coding Duck

1개의 댓글

comment-user-thumbnail
2022년 4월 25일

Spring Data Jdbc로 삽질하다가 같은 에러가 발생했는데 덕분에 해결했습니다
감사합니다!

답글 달기