我使用的spring version:4.3.4
1、为什么出现双引号?
主要是因为在返回的字符串不是json格式,同时又被默认org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 处理,所以就导致了双引号
2、怎么解决?(三种配置都可以解决)
在当前spring version 下 配置一 (这是使用spring 默认的配置)
<mvc:annotation-driven/>
配置二
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
配置三
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
配置二和配置三等效的
配置一和配置二的区别: 配置一converter 有很多都是spring 默认加载的, 配置二就只有你配置的两个converter
3、为什么这样就能解决? spring 会根据你配置converter来处理的你返回值,当返回的字符串同时又不是json 格式时,能够被org.springframework.http.converter.StringHttpMessageConverter 处理,就不会出现双引号,以上三种都可以解决这个问题
4、总结 只要保证我们的返回值被合适的converter处理就能得到我们想要的效果,具体可以查看org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter,这个类装配了很多处理单元。