SpringMVC 内容协商是restful风格的体现,一般springmvc和前台数据交换有xml格式和json两种数据格式,平时我们主流使用的主要是json格式
我现在在pom.xml 文件中配置了两种解析工具,一个是json,一个是xml
但是返回的数据格式是xml,我想要json,

看看我的ajax请求:
再看看我的Controller是这样的:
我看了一下HttpMessageConverter 发现是这样的:

是否和这个消息转换器中的顺序有关系,为什么xml的顺序在前面,是不是我pom.xml 中引入的顺序有问题,我们来看一下:
我是把json放到了xml的依赖的前面,现在我调整一下顺序,但是并没有效果
在 Spring MVC 中,消息转换器默认顺序是由框架设计及加载机制决定的,原因如下:
- 历史与兼容性:早期 Spring MVC 版本确定了消息转换器的默认加载顺序,后续为保证兼容性,未做大幅改动。像
ByteArrayHttpMessageConverter等作为基础转换器,先加载以处理简单数据类型,为后续复杂类型转换打基础。 - 约定优于配置原则:框架遵循约定优于配置,按常见应用场景设定默认顺序。例如,先处理字节数组、字符串等基础类型,再处理资源相关类型,最后处理复杂对象的 JSON、XML 转换 。这种顺序能满足多数项目的常规数据处理需求,减少开发者配置工作。
- 依赖引入顺序影响:若项目引入新的消息转换器依赖,Maven 等构建工具按依赖声明顺序或依赖传递规则引入,会影响消息转换器在容器中的注册顺序。比如先声明了 XML 相关依赖,后声明 JSON 相关依赖,在某些情况下会导致 XML 转换器排在 JSON 转换器前。
如何强制改变顺序:
我修改了spring-servlet.xml 中的配置:
再次调试:

这样前台就优先返回json格式的数据了
希望对你有所帮助
642

被折叠的 条评论
为什么被折叠?



