最近开始学习spring mvc,配置HttpMessageConverter来转换json和xml,以及配置conversion-service来格式化数据,这个两个配置总不能都测试通过,要么是第一个转换json和xml出错,格式化数据通过,那么就是第一个通过,第二个就不能通过
下面是httpMessageConverter测试通过而conversion-service测试不通过的相关配置
Xml代码
- <bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
- <bean
- class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
- p:messageConverters-ref="messageConverters" />
- <util:list id="messageConverters">
- <bean
- class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
- <bean
- class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
- <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
- <bean
- class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
- <bean
- class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"
- p:marshaller-ref="xmlMarshaller" p:unmarshaller-ref="xmlMarshaller">
- </bean>
- <bean
- class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
- </util:list>
- <mvc:annotation-driven conversion-service="conversion-service"/>
如果把<mvc:annotation-driven>这个行配置提前到配置RequestMappingHandlerAdapter前则出现格式数据化可以通过,而HttpMessageConverter无法转换json和xml
在转换json时,debug信息:
2014-06-09 11:59:29,289 DEBUG (org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor:135) - Reading [class com.example.User] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@f0411ba]
2014-06-09 11:59:29,290 DEBUG (org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver:134) - Resolving exception from handler [public org.springframework.http.ResponseEntity<com.example.User> com.example.web.UserController.handle51(org.springframework.http.HttpEntity<com.example.User>)]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
第一条信息说明spring框架已经找到了对应的HttpMessageConverter,也即是转换json使用的MappingJackson2HttpMessageConverter,但是第二条信息却报了类型无法接受的一场,我也在网上查过,大多说这是由于没有引入jackson依赖,但是我已经引入了jackson所需的依赖,不然第一种配置应该不会运行通过。
我也试过其他几种配置,例如使用<mvc>标签直接配置HttpMessageConverter,但是仍存在这两种配置无法同时测试通过
问题补充:我使用的是spring 4