들어가기 전
- 공공데이터포털용 DTO 만들다가 제너릭을 넣으면 앞으로 돌려쓸 수 있을 것 같아서 제너릭을 시도
상황
GovDataApiResultDTO.class
@Getter
@NoArgsConstructor
@Schema(name = "공공데이터포털 API 결과값에 해당하는 전체 리스트 DTO")
public class GovDataApiResultDTO<T> {
private GovDataApiResponseDTO<T> response;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class GovDataApiResponseDTO<T> {
private GovDataApiHeaderDTO header;
private GovDataApiBodyDTO<T> body;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class GovDataApiHeaderDTO {
@Schema(description = "결과코드")
private String resultCode;
@Schema(description = "결과메시지")
private String resultMsg;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class GovDataApiBodyDTO<T> {
@Schema(description = "공휴일 목록")
private GovDataApiItemsDTO<T> items;
@Schema(description = "페이지당항목수")
private Integer numOfRows;
@Schema(description = "페이지")
private Integer pageNo;
@Schema(description = "모든항목수")
private Integer totalCount;
}
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class GovDataApiItemsDTO<T> {
private List<T> item;
}
}
ApiService.class
ResponseEntity<GovDataApiResultDTO<GovDataApiHolidayItemDTO>> httpResponse = restTemplate.exchange(uri, HttpMethod.GET, httpRequest, new ParameterizedTypeReference<GovDataApiResultDTO<GovDataApiHolidayItemDTO>>(){});
- ParameterizedTypeReference를 이용하면 restTemplate 사용시 제너릭 타입 사용 가능
참고자료