Если вы подключите свой весенний проект с помощью @EnableWebMvc
или через XML с помощью тега <mvc:annotation-driven />
, вы включите множество функций. Вы можете прочитать подробный список функций в original Spring docs.
Одной из функций, которые включены, является поддержка параметров метода @RequestBody
и возвращаемых значений метода @ResponseBody
. Это делается через компонент HttpMessageConverter
, и функция включена для методов, которые аннотируются с помощью @RequestMapping
или @ExceptionHandler
.
Ниже перечислены преобразователи, которые зарегистрированы по умолчанию:
ByteArrayHttpMessageConverter
преобразует массивы байтов.
StringHttpMessageConverter
конвертирует строки.
ResourceHttpMessageConverter
конвертирует в/из org.springframework.core.io.Resource
для всех типов медиа.
SourceHttpMessageConverter
конвертирует в/из javax.xml.transform.Source
.
FormHttpMessageConverter
преобразует данные формы в/из MultiValueMap.
Jaxb2RootElementHttpMessageConverter
преобразует объекты Java в/из XML - добавляется, если JAXB2 присутствует в пути к классам.
MappingJackson2HttpMessageConverter
(или MappingJacksonHttpMessageConverter
) конвертирует в/из JSON - добавляется, если на пути к классу присутствует Jackson 2 (или Jackson).
AtomFeedHttpMessageConverter
конвертирует каналы Atom - добавляется, если Рим присутствует на пути к классам.
RssChannelHttpMessageConverter
конвертирует RSS-каналы - добавляется, если Рим присутствует на пути к классам.
Так что, если у вас есть веб включен проект с Джексоном, имеющихся на пути к классам, Spring будет автоматически преобразовывать возвращаемые значения из контроллера-метода, который с аннотацией @ResponseBody
(если клиент абонент принимает JSON, что есть что означает, что заголовок accept обычно должен быть установлен в application/json
).
Если вы хотите переопределить HttpMessageConverter
S можно реализовать следующее:
@Configuration
@EnableWebMvc
public class YourConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
// Do your magic, override your stuff
}
}
За хорошее введение о том, как настроить, например, Конвертер Джексона вы можете прочитать this article from DZone about Customizing HttpMessageConverters with Spring Boot and Spring MVC.
Спасибо! Это то, что я искал! – Tom
Могу ли я переопределить MappingJackson2HttpMessageConverter, если мне нужна настройка? – Tom
Ну, вы можете, например, проверить [этот выход] (http://java.dzone.com/articles/customizing) – wassgren