本文介紹了Spring MVC 5中的默認消息轉換器的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試了解為什么我的spring v.5.0.4-RELEASE
無法正確加載默認消息轉換器。
我從我的servlet.xml中刪除了所有聲明,并希望找到從AbstractMessageConverterMethodProcessor
中正確加載的所有默認轉換器,但我只得到了以下4個:
org.springframework.http.converter.ByteArrayHttpMessageConverter@35ca138b
org.springframework.http.converter.StringHttpMessageConverter@2b755f0d
org.springframework.http.converter.xml.SourceHttpMessageConverter@74f5d717
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@6982b849
有什么線索嗎?
推薦答案
我最終了解到問題是由RequestMappingHandlerAdapter
Bean
引起的
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
這是覆蓋了Spring的默認設置,并發(fā)布了我的問題中列出的四個轉換器。
解決方案是將我正在尋找的轉換器放在Bean下面,如下所示:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean
class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="autoDetectFields" value="true" />
<property name="autoDetectGettersSetters" value="false" />
<property name="objectMapper">
<bean class="com.mypackage.CustomMapper" />
</property>
</bean>
</property>
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
放置在annotation-driven
下的配置被完全忽略:
<mvc:annotation-driven>
<mvc:message-converters>
...
</mvc:message-converters>
</mvc:annotation-driven>
這篇關于Spring MVC 5中的默認消息轉換器的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,