У меня есть очень простой клиент отдыха, и я хотел бы разобрать ответ службы в пользовательском ResponseBody класса:Spring RestTemplate - Что делает ResponseBody класс выглядеть
ResponseEntity<CustomResponseBody> entity = restTemplate.postForEntity(uri, request, CustomResponseBody.class);
Фактический вопрос, как класс CustomResponseBody должен выглядеть, с точки зрения сеттеров, добытчиков и конструкторами в предположении, что выход из службы я потребляющий является JSON как:
{item1:something, item2:otherthing}
и мой метод makeRestTemplate является:
@Bean
public RestTemplate makeRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(TIMEOUT_MILLIS);
requestFactory.setReadTimeout(TIMEOUT_MILLIS);
restTemplate.setRequestFactory(requestFactory);
restTemplate.setErrorHandler(errorHandler);
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = makeObjectMapper();
jsonConverter.setObjectMapper(objectMapper);
jsonConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET),
new MediaType("text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
}
}
return restTemplate;
}
У меня была работа с анотацией lombok @Data, но я хотел бы знать, что является минимальным требованием класса customResponseBody для фактического анализа ответа.
UPDATE:
Простой POJO делает работу, у меня были некоторые проблемы при попытке реализовать собственный сеттер и методов получения, похоже, что-нибудь рядом простых методах получения и установки делает процесс связывания неудачу.
Принято
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class CustomResponseBody {
private String item1;
private String item2;
}
непринятый
import lombok.Setter;
import lombok.Getter;
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class CustomResponseBody {
@Getter
@Setter
private String item1;
@Getter
private String item2;
public void setItem2(String item2) {
if ("something".equals(item2)) {
this.item2 = "whatever";
} else {
this.item2 = "otherstuff"
}
}
}