javascript
使用Spring Boot和Spring MVC自定义HttpMessageConverters
為Spring Boot應(yīng)用程序或直接的Spring MVC應(yīng)用程序公開(kāi)基于REST的終結(jié)點(diǎn)很簡(jiǎn)單,以下是一個(gè)控制器,該終結(jié)點(diǎn)公開(kāi)了一個(gè)終結(jié)點(diǎn),用于基于其發(fā)布的內(nèi)容創(chuàng)建實(shí)體:
在內(nèi)部,Spring MVC使用一個(gè)稱為HttpMessageConverter的組件將Http請(qǐng)求轉(zhuǎn)換為對(duì)象表示形式,然后再轉(zhuǎn)換回該形式。
自動(dòng)注冊(cè)了一組默認(rèn)轉(zhuǎn)換器,這些轉(zhuǎn)換器支持各種不同的資源表示格式,例如json,xml。
現(xiàn)在,如果需要以某種方式自定義消息轉(zhuǎn)換器,Spring Boot使其變得簡(jiǎn)單。 例如,考慮上面示例中的POST方法是否需要稍微靈活一些,并且應(yīng)該忽略Hotel實(shí)體中不存在的屬性-通常,這可以通過(guò)配置Jackson ObjectMapper來(lái)完成,這一切都需要使用Spring來(lái)完成。引導(dǎo)是創(chuàng)建一個(gè)新的HttpMessageConverter bean,最終將覆蓋所有默認(rèn)消息轉(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;}這對(duì)于Spring-Boot應(yīng)用程序效果很好,但是對(duì)于不使用Spring-Boot的直接Spring MVC應(yīng)用程序,配置自定義轉(zhuǎn)換器要稍微復(fù)雜一些-默認(rèn)轉(zhuǎn)換器未默認(rèn)注冊(cè),最終用戶必須明確說(shuō)明如何注冊(cè)默認(rèn)值-以下是基于Spring 4的應(yīng)用程序的相關(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的應(yīng)用程序的MVC層配置的方法。 在configureMessageConverters方法中,正在注冊(cè)自定義轉(zhuǎn)換器,然后進(jìn)行顯式調(diào)用以確保還注冊(cè)了默認(rèn)值。 比基于Spring-Boot的應(yīng)用程序需要更多的工作。
翻譯自: https://www.javacodegeeks.com/2014/09/customizing-httpmessageconverters-with-spring-boot-and-spring-mvc.html
總結(jié)
以上是生活随笔為你收集整理的使用Spring Boot和Spring MVC自定义HttpMessageConverters的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用Project Lombok减少Ja
- 下一篇: Spring Boot和Spring D