javascript
使用Spring Boot和Spring MVC自定义HttpMessageConverters
為Spring Boot應用程序或直接的Spring MVC應用程序公開基于REST的終結(jié)點很簡單,以下是一個控制器,該終結(jié)點公開了一個終結(jié)點,用于基于其發(fā)布的內(nèi)容創(chuàng)建實體:
在內(nèi)部,Spring MVC使用一個稱為HttpMessageConverter的組件將Http請求轉(zhuǎn)換為對象表示形式,然后再轉(zhuǎn)換回該形式。
自動注冊了一組默認轉(zhuǎn)換器,這些轉(zhuǎn)換器支持各種不同的資源表示格式,例如json,xml。
現(xiàn)在,如果需要以某種方式自定義消息轉(zhuǎn)換器,Spring Boot使其變得簡單。 例如,考慮上面示例中的POST方法是否需要稍微靈活一些,并且應該忽略Hotel實體中不存在的屬性-通常,這可以通過配置Jackson ObjectMapper來完成,這一切都需要使用Spring來完成。引導是創(chuàng)建一個新的HttpMessageConverter bean,最終將覆蓋所有默認消息轉(zhuǎn)換器,這種方式是:
@Beanpublic MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);jsonConverter.setObjectMapper(objectMapper);return jsonConverter;}這對于Spring-Boot應用程序效果很好,但是對于不使用Spring-Boot的直接Spring MVC應用程序,配置自定義轉(zhuǎn)換器要稍微復雜一些-默認轉(zhuǎn)換器未默認注冊,最終用戶必須明確說明如何注冊默認值-以下是基于Spring 4的應用程序的相關(guān)代碼:
@Configuration public class WebConfig extends WebMvcConfigurationSupport {@Beanpublic MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);jsonConverter.setObjectMapper(objectMapper);return jsonConverter;}@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(customJackson2HttpMessageConverter());super.addDefaultHttpMessageConverters();} }在這里, WebMvcConfigurationSupport提供了一種更好地調(diào)整基于Spring的應用程序的MVC層配置的方法。 在configureMessageConverters方法中,正在注冊自定義轉(zhuǎn)換器,然后進行顯式調(diào)用以確保還注冊了默認值。 比基于Spring-Boot的應用程序需要更多的工作。
翻譯自: https://www.javacodegeeks.com/2014/09/customizing-httpmessageconverters-with-spring-boot-and-spring-mvc.html
總結(jié)
以上是生活随笔為你收集整理的使用Spring Boot和Spring MVC自定义HttpMessageConverters的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Project Lombok减少Ja
- 下一篇: 造价师备案流程(造价师备案)