讲师中心 微信公众号
AI工具推荐 视频效率加速

Spring Boot XML Jackson 校验:禁止忽略未知属性

小杰君_5623

小杰君_5623

发布时间:2025-11-16 23:46:01

|

924人浏览过

|

来源于php中文网

原创

spring boot xml jackson 校验:禁止忽略未知属性

本文介绍了如何配置 Spring Boot 应用,使其在使用 Jackson 反序列化 XML 请求体时,能够严格校验并拒绝包含未知属性的请求,从而保证数据的完整性和安全性。通过配置 `spring.jackson.deserialization.fail-on-unknown-properties` 属性,可以实现这一功能,并有效防止恶意或错误的请求数据进入系统。

在使用 Spring Boot 构建 RESTful API 时,我们经常需要处理 XML 格式的请求数据。默认情况下,Jackson 库(Spring Boot 默认的 JSON/XML 处理库)在反序列化 XML 时,会忽略请求体中未在 Java 类中定义的属性,这可能会导致数据丢失或潜在的安全问题。为了避免这种情况,我们需要配置 Spring Boot,使其在遇到未知属性时抛出异常。

配置 Jackson 以禁止忽略未知属性

Spring Boot 提供了便捷的方式来配置 Jackson 的反序列化行为。只需在 application.properties 或 application.yml 文件中添加以下配置:

spring.jackson.deserialization.fail-on-unknown-properties=true

或者,在 application.yml 中:

spring:
  jackson:
    deserialization:
      fail-on-unknown-properties: true

这个配置告诉 Jackson 在反序列化过程中,如果遇到目标类中不存在的属性,则抛出一个 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException 异常。

示例代码

假设我们有以下 Kotlin 数据类 Data:

data class Data(
   val item: String? = null
)

以及一个处理 POST 请求的 Controller:

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController

@RestController
class DataController {

    @PostMapping("/data", consumes = [MediaType.APPLICATION_XML_VALUE], produces = [MediaType.APPLICATION_XML_VALUE])
    fun pushMasterData(@RequestBody data: Data): Data {
        return data
    }
}

如果我们发送以下 XML 请求:

<items>
   <item>foo</item>
   <trash>This should not be allowed!</trash>
</items>

在没有配置 spring.jackson.deserialization.fail-on-unknown-properties=true 的情况下,服务器会接受这个请求,并且 Data 对象中的 item 属性会被正确赋值为 "foo",而 trash 属性会被忽略。

但是,配置了 spring.jackson.deserialization.fail-on-unknown-properties=true 之后,服务器会返回一个 400 Bad Request 错误,并包含一个 UnrecognizedPropertyException 异常信息,指出 trash 属性无法被识别。

注意事项

  • 确保你的项目中引入了 Jackson XML 依赖。通常,在使用 spring-boot-starter-web 或 spring-boot-starter-webflux 时,Jackson 依赖会被自动引入。如果没有,你需要手动添加:

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>
  • 如果你的请求体使用了 XML 根元素,例如 <items>, 并且你希望 Jackson 直接将 XML 的子元素映射到 Data 类的属性,你需要使用 Jackson 的 XML 注解来配置映射关系。例如,可以使用 @JacksonXmlRootElement 和 @JacksonXmlProperty 注解。

总结

通过配置 spring.jackson.deserialization.fail-on-unknown-properties=true,我们可以有效地防止 Spring Boot 应用在处理 XML 请求时忽略未知属性,从而提高数据的完整性和安全性。这是一种简单而有效的防御性编程实践,建议在所有需要处理 XML 数据的 Spring Boot 应用中启用。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
Kotlin协程编程与Spring Boot集成实践
Kotlin协程编程与Spring Boot集成实践

本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

331

2026.02.12

Java Kotlin协程与异步编程实战
Java Kotlin协程与异步编程实战

本专题围绕 Kotlin 协程与异步编程展开,讲解挂起函数、协程作用域、异步任务调度及并发控制方法。通过实际项目案例,帮助开发者提升后端服务性能,实现高效异步任务处理与稳定性保障。

139

2026.04.13

Kotlin Android开发教程大全
Kotlin Android开发教程大全

系统讲解 Google 官方推荐的 Android 开发首选语言 Kotlin 的核心知识与工程实践,涵盖 Kotlin 简洁语法(空安全/数据类/扩展函数/解构声明/作用域函数)与 Java 互操作、集合操作与函数式编程、协程(Coroutines)异步编程(suspend/launch/async/Flow)、Jetpack Compose 声明式 UI 开发(状态管理/组合函数/导航/动画)、MVVM / MVI 架构设计与 Vi

208

2026.06.03

spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2171

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

417

2026.01.26

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

531

2023.09.05

spring框架有哪些
spring框架有哪些

spring框架有Spring Core、Spring MVC、Spring Data、Spring Security、Spring AOP和Spring Boot。详细介绍:1、Spring Core,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度;2、Spring MVC,提供基于模型-视图-控制器的架构,用于开发灵活和可扩展的Web应用程序等。

1415

2023.10.12

Java Spring Boot开发
Java Spring Boot开发

本专题围绕 Java 主流开发框架 Spring Boot 展开,系统讲解依赖注入、配置管理、数据访问、RESTful API、微服务架构与安全认证等核心知识,并通过电商平台、博客系统与企业管理系统等项目实战,帮助学员掌握使用 Spring Boot 快速开发高效、稳定的企业级应用。

4066

2025.08.19

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

60

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn