Java/오류노트
[Java/오류노트] Solved - org.springframework.http.converter.HttpMessageConversionException
adjh54
2024. 6. 3. 20:00
728x170
해당 글에서는 Java 내에서 발생하는 오류에 대한 해결 방법에 대해 알아봅니다.
1) 문제점
💡 문제점
- API 통신을 수행 시 아래와 같은 메시지와 함께 DateInfoDto라는 곳에서 문제가 발생하였습니다.
- 이는 SQL문이 수행되고 Java 객체와 매핑되는 과정에서 해당 SQL 컬럼 데이터와 Java 객체 간의 매핑이 되지 않아 발생하는 문제였습니다.
💡 오류 메시지
- org.springframework.http.converter.HttpMessageConversionException

1. 문제 지점 확인
💡 문제 지점 확인 : XXXMapper.xml
- 아래와 같이 Mybatis 내의 SQL문 자체에서는 문제가 없이 쿼리가 수행됨을 확인하였습니다.

💡 문제 지점 확인 : DTO
- DTO 내에서는 Lombok을 이용하여서 DTO를 구성하였습니다. 해당 부분 역시 문제가 되는 부분이 없었습니다.
package com.adjh.springboot3tierform.model.dto;
import lombok.*;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.time.Year;
/**
* Please explain the class!!
*
* @author : lee
* @fileName : DateInfoDto
* @since : 24. 6. 3.
*/
@Getter
@ToString
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DateInfoDto {
// 날짜 시퀀스
private int dateSq;
// 날짜 타입
private Date dateType;
// 시간 타입
private Time timeType;
// 연도 타입
private Year yearType;
// 타임스템프 타입
private Timestamp timestampType;
// 타임스탬프 타입(밀리세컨드)
private Timestamp timestampMilsecType;
// 타임스탬프 타입(마이크로세컨드)
private Timestamp timestampMicrosecType;
@Builder
public DateInfoDto(int dateSq, Date dateType, Time timeType, Year yearType, Timestamp timestampType, Timestamp timestampMilsecType, Timestamp timestampMicrosecType) {
this.dateSq = dateSq;
this.dateType = dateType;
this.timeType = timeType;
this.yearType = yearType;
this.timestampType = timestampType;
this.timestampMilsecType = timestampMilsecType;
this.timestampMicrosecType = timestampMicrosecType;
}
}
2) 해결방법
💡 해결방법
- 우선, 해당 문제에 대해서는 Getter가 존재하지 않아서 발생하는 문제입니다.
- SQL 수행 결과를 DTO로 객체와 매핑을 하였지만 데이터를 받아오는 부분이 존재하지 않아서 생기는 문제였습니다.
- 위와 같은 경우에는 @Getter 어노테이션을 지정하였지만, build.gradle 파일 내에 annotationProcessor 'org.projectlombok:lombok'가 추가되지 않아서 lombok이 수행되지 않던 문제였습니다.
1. build.gradle
💡 build.gradle
- 아래와 같이 complie 내에서는 lombok이 수행되어 서버가 실행되는 동안에 문제가 발생하지 않았지만, @Getter라는 메서드를 사용하기 위해서는 annotationProcessor 내에 라이브러리 추가가 되지 않았음을 확인하였습니다.

💡 그렇기에 아래와 같이 annotationProcessor 'org.projectlombok:lombok'를 추가하고 빌드를 수행하여 해당 문제를 해결하였습니다.

2. 문제 해결화면
💡 문제 해결화면
- 동일한 API 통신을 하였을 때, 데이터를 제대로 조회가 됨을 확인하여 문제를 해결하였습니다.

오늘도 감사합니다. 😀
그리드형