Как Spring знает, как преобразовать возвращаемый объект в JSON, а не XML или какой-либо другой формат?
Учтите следующее:
@GetMapping("/accounts/{id}")
@ResponseBody
public Account handle() {
return new Account("1", "sample");
}
Здесь нет Accept
заголовок, указанный в запросе, но ответ по умолчанию преобразуется в JSON
когда используется Spring Boot. @ResponseBody
аннотация в своей документации ничего не говорит о том, что происходит преобразование
4 ответа
By default, A controller return JSON on spring boot project. But If you want XML format then you can configure this on the pom.xml. For example, you can add this following dependency if you want to return XML data,
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
В @requestMapping Вы можете добавить переменные, такие как Produces или Consumes, например:
consumes = MediaType.APPLICATION_JSON_VALUE
produces = MediaType.APPLICATION_JSON_VALUE
Spring по умолчанию использует Jackson/Json (найдя его в пути к классам), но вы можете настроить его самостоятельно:
@Configuration
public class MixInWebConfig extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(customHttpMessageConverter());
}
}
Spring-boot приложения используют spring-boot-starter-web в зависимости от POM.xml. Эта конкретная зависимость загружает Джексон-тип данных быстрее xmls, который инициализируется, когда мы используем @springbootapplication.