新闻中心

Spring Boot如何处理xml请求与响应 配置ContentNegotiationManager解析xml

2025-11-13
浏览次数:
返回列表
Spring Boot通过添加jackson-dataformat-xml依赖并配置ContentNegotiationManager,可实现根据请求头或参数自动返回XML或JSON。1. 添加Jackson XML依赖以支持XmlMapper;2. 配置WebMvcConfigurer启用内容协商,支持Accept头或format参数决定格式;3. 实体类可使用JAXB注解优化XML序列化;4. @RestController无需修改即可同时处理XML与JSON的请求和响应,实现无缝切换。

spring boot如何处理xml请求与响应 配置contentnegotiationmanager解析xml

Spring Boot 默认使用 Jackson 处理 JSON,但要支持 XML 请求与响应,需要引入相关依赖并配置 ContentNegotiationManager,让 Spring 能根据请求头或扩展名自动选择返回 XML 或 JSON 格式。

1. 添加 Jackson XML 依赖

Spring Boot 使用 JacksonXmlModule 来处理 XML 序列化和反序列化。需在 pom.xml 中添加:


  com.fasterxml.jackson.dataformat
  jackson-dataformat-xml

该依赖提供 XmlMapper,Spring 会自动检测并用于 XML 数据绑定。

2. 启用 Web MVC 并配置 ContentNegotiationManager

如果使用自定义内容协商策略(如通过请求路径或参数决定返回格式),需配置 WebMvcConfigurer

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

  @Override
  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.f*orParameter(true)
        .parameterName("format")
        .defaultContentType(MediaType.APPLICATION_JSON)
        .mediaType("json", MediaType.APPLICATION_JSON)
        .mediaType("xml", MediaType.APPLICATION_XML);
  }

  @Bean
  public ContentNegotiationManager contentNegotiationManager() {
    List strategies = new ArrayList();
    strategies.add(new HeaderContentNegotiationStrategy()); // 默认按 Accept 头判断
    strategies.add(new ParameterContentNegotiationStrategy(
        MediaType.APPLICATION_JSON,
        MediaType.APPLICATION_XML));

    return new ContentNegotiationManager(strategies);
  }
}

这样可以通过以下方式触发 XML 响应:

  • 请求头:Accept: application/xml
  • 请求参数:?format=xml

3. 实体类添加 JAXB 注解(可选)

为确保 XML 序列化正确,实体类建议添加 j*ax.xml.bind.annotation 注解:

Perplexity Perplexity

Perplexity是一个ChatGPT和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要

Perplexity 302 查看详情 Perplexity @XmlRootElement(name = "user")
public class User {
  private Long id;
  private String name;

  @XmlElement
  public Long getId() { return id; }

  @XmlElement
  public String getName() { return name; }

  // setter...
}

如果不加注解,Jackson XML 仍能工作,但控制粒度较弱。

4. 控制器示例

普通 @RestController 即可同时支持 JSON 和 XML:

@RestController
public class UserController {

  @GetMapping("/user/{id}")
  public User getUser(@PathVariable Long id) {
    return new User(id, "张三");
  }

  @PostMapping("/user")
  public User createUser(@RequestBody User user) {
    user.setId(1L);
    return user;
  }
}

发送 Content-Type: application/xml 的 POST 请求,Spring 会自动解析 XML 为对象;响应时根据协商结果输出 XML 或 JSON。

基本上就这些。只要依赖正确、配置好协商策略,Spring Boot 可无缝切换 XML 与 JSON 支持。不复杂但容易忽略注解和依赖。

以上就是Spring Boot如何处理xml请求与响应 配置ContentNegotiationManager解析xml的详细内容,更多请关注其它相关文章!


# js  # json  # go  # app  # lsp  # 序列化  # java  # magento的seo  # 柳北区智能网络营销推广  # 海外建设图片搜索网站  # 运动鞋网站建设海报  # 浅谈seo虾哥网络  # 网站策划建设  # 江湖电影网站建设  # 嘉峪关seo关键词  # seo营销火山星1推荐  # 调研视频网站推广思路  # 文件转换成  # 是一个  # 实体类  # 如何实现  # 如何将  # 转换为  # 转换成  # 有哪些  # 如何处理 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 动漫花园资源网使用步骤_动漫花园资源网下载流程  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  抖音怎么赚钱_抖音创作者变现方法与途径指南  海棠电脑版入口_通过电脑访问海棠官网阅读  c++如何使用TBB库进行任务并行_c++ Intel线程构建模块  Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南  LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理  批改网学生版PC登录 批改网官网登录系统入口  4399体育竞技小游戏_4399小游戏赛事入口  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  j*a toString()的覆盖  狙击外星人小游戏开始_狙击外星人小游戏立即开始  Django表单提交验证失败后保持字段值不刷新  c++中为什么推荐使用using替代typedef_c++现代化类型别名  12306选座怎么选到商务座_12306商务座选择与配置说明  c++如何使用Meson构建系统_c++比CMake更快的构建工具  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  Archive of Our Own官网直达 AO3最新可用地址一览  抖音极速版最新版本 抖音极速版官方下载地址  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  如何在 Excel Online 和 Google 表格中更改日期格式  J*aScript对象创建方式_J*aScript设计模式应用  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  Go语言中Map值调用指针接收器方法的限制与应对  在J*aScript中复现SciPy的B样条拟合与求值:关键考量  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  《噬血代码2》新预告片发布 展示游戏剧情  抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法  魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  Angular中单选按钮的正确使用与常见陷阱解析  DLsite中文平台入口 DLsite官网内容在线查看  痛风发作了怎么办? 快速止痛和后期饮食调理  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  响应式图片在网页设计中的正确实现方法  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  J*aScript 字符串标签转换:使用正则表达式高效替换  新三国志曹操传110级星符试炼夏侯渊极难攻略  夸克AO3官网入口_AO3镜像网站2025推荐 

搜索