작성
·
2K
0
0
dto related error occurred and I have a question
how to fix this error?
error message:
feign.codec.DecodeException: Type definition error: [simple type, class com.app.api.health.dto.HealthCheckResponseDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.app.api.health.dto.HealthCheckResponseDto (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
controller
@GetMapping("/health/feign-test")
public ResponseEntity<HealthCheckResponseDto> healthCheckTest() {
HealthCheckResponseDto healthCheckResponseDto = helloClient.healthCheck();
return ResponseEntity.ok(healthCheckResponseDto);
}
dto
package com.app.api.health.dto;
import lombok.Builder;
import lombok.Getter;
import java.util.List;
@Getter @Builder
public class HealthCheckResponseDto {
private String health;
private List<String> activeProfiles;
}
답변 3
0
0
일단 이렇게 해결 했습니다
https://yuja-kong.tistory.com/99
package com.app.api.health.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.List;
@AllArgsConstructor
@Getter @Builder
@NoArgsConstructor
public class HealthCheckResponseDto {
private String health;
private List<String> activeProfiles;
}
구파고 선생님 답변 감사합니다
저 혹시 멘토링 같은거 안하시나여?
템플릿 제작하면서 모르는 부분이 많은데
언제 한번 따로 배울수 없을까요?
0
안녕하세요! json 데이터를 java object로 바꾸는 것을 deserialization(역직렬화) 라고 하는데 스프링부트 버전이나 롬복 버전에 따라서 오류가나는 분들이 있으신거 같습니다.
에러메세지를 보면 기본 생성자같은 생성자가 없어서 오류가 발생하고 있습니다. 롬복에서 제공하는 @NoArgsConstructor를 사용하면 기본생성자를 컴파일하면서 생성해주는데 해당 어노테이션을 클래스위에 선언해두면 해결될 것 입니다.
현재 activeProfiles를 따로 지정하지 않으신거 같네요! Health Check API 강의 5분 12초부터 보시면 active profiles를 dev로 지정하는 부분을 보실 수 있습니다. 해당 부분과 동일하게 진행해주시면 dev로 응답결과가 올것입니다.