프로그래밍을 하다보면 여러가지 로그들을 마주하게 됩니다. 특히 에러로그에 대해서는 주의 깊게 봐야할 필요가 있습니다.
이번 포스팅에서는 HttpMediaTypeNotAcceptableException 에러가 나는 이유를 알아보도록 하겠습니다.
HttpMediaTypeNotAcceptableException
스프링 부트로 프로젝트를 만들고 API를 만들어서 테스트 하던 도중 아래와 같은 에러가 발생했습니다.
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
항상 Exception이 나올때는 어떠한 이유인지 명확하게 밝혀주기 때문에 로그를 잘 보는것도 매우 중요하다 생각합니다. 이번 로그는 접근할 수 있는 표현을 찾을 수 없다는 내용입니다. 문제가 발생하는 부분을 찾아봤고 공통적으로 사용하는 Response를 Dto를 만들어서 사용하는 부분에서 발생했습니다.
@Builder
public class CommonRespDto<T> {
private T data;
}
제가 만든 CommonRespDto는 제네릭 타입을 이용해서 만들었습니다. 문제는 이 공통 클래스였습니다. 즉, 무언가 접근할 수 없는 문제가 발생한 것입니다. 즉, 이 클래스에서 Getter에 관련된 메서드들이 존재하지 않았기 때문에 값을 가져올 수 없는 것입니다.
Getter에 관련된 메서드를 만들어줘도 되지만 저는 아래처럼 바꿔주었습니다.
@Getter
@Builder
public class CommonRespDto<T> {
private T data;
}
Lombok을 사용하고 있기 때문에 @Getter 애노테이션을 이용해서 추가해 주었습니다. Lombok은 개발자가 조금 개발하기 편하기 만들어주는 라이브러리입니다. 다만 이것도 잘 알고 사용해야 할 부분인것 같습니다.
2021.03.02 - [쿤즈 Dev/Spring Boot] - [Spring Boot] Lombok 어노테이션 활용하기
이번 포스팅에서는 HttpMediaTypeNotAcceptableException에 대해서 알아보았습니다. 보통 Getter 메서드들은 기본적으로 만들어주기 때문에 이러한 Exception을 볼 일이 많이 없어서 저도 처음엔 살짝 당황스러웠습니다.
개발단계에서 여러가지 에러가 많이 생되는 부분은 모두 처리가 가능하기 때문에 한편으로는 좋은 부분이라 생각합니다. 도움이 되셨으면 합니다. 이상입니다.
'쿤즈 Dev > Spring Boot' 카테고리의 다른 글
[Spring Boot] Service 테스트 코드 작성하기 (feat. Kotlin) (0) | 2022.06.07 |
---|---|
[Spring Boot] Repository 테스트 코드 작성하기(feat. Kotlin) (0) | 2022.06.04 |
[Spring Boot] PostgreSQL 접속하기 위한 설정 방법 (0) | 2022.04.19 |
[Spring Boot] 스프링 부트 profile 설정(스프링 부트 2.4.0 이후) (0) | 2022.04.18 |
[Spring Boot] Exception 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가) (0) | 2022.03.22 |
댓글