【Spring 丨数据绑定】

news2024/10/7 19:24:20

数据绑定

  • 概述
  • Databinder
    • 核心属性
    • 绑定参数
    • 绑定元数据
    • 绑定验证

概述


   Spring 数据绑定(Data Binding)的作用是将用户的输入动态绑定到应用程序的领域模型JavaBean(或用于处理用户输入的任何对象)。 也就是说,Spring数据绑定机制是将属性值设置到目标对象中。如下图所示:

在这里插入图片描述

  Spring 提供了DataBinder来做到这一点。此外,BeanWrapper 也具有类似的功能,DataBinder和较低级别的BeanWrapper都使用PropertyEditorSupport 来实现解析和格式化属性值。

在这里插入图片描述
但DataBinder是 在org.springframework.validation 内的,因此它也支持验证功能。

Databinder


在 Spring 中,DataBinder 类是数据绑定功能的基类。他的直接子类是WebDataBinder(主要用于 Spring Web 数据的绑定),此外,还有一些 WebDataBinder 的扩展子类,如下图所示:
在这里插入图片描述

核心属性


属性说明
target要绑定的目标对象(或者null 如果绑定器仅用于转换普通参数值)
objectName目标对象的名称
bindingResult属性绑定结果(绑定结果的通用接口。扩展了 Errors错误注册功能的接口,允许Validator应用,并添加了特定于绑定的分析和模型构建。)
typeConverter类型转换器(定义类型转换方法的接口。通常(但不一定)与PropertyEditorRegistry接口结合实现 - 线程不安全)
conversionService类型转换服务(用于类型转换的服务接口。这是转换系统的入口点。调用convert(Object, Class)以使用该系统执行线程安全类型转换)
messageCodesResolver消息代码解析器(用于从验证错误代码构建消息代码的策略接口。由 DataBinder 用于构建 ObjectErrors 和 FieldErrors 的代码列表。生成的消息代码对应于 MessageSourceResolvable 的代码(由 ObjectError 和 FieldError 实现)。)
validators验证器(特定于应用程序的对象的验证器。该界面完全脱离任何基础设施或上下文;也就是说,它不与仅验证 Web 层、数据访问层或其他层中的对象相关。因此,它适合在应用程序的任何层中使用,并支持将验证逻辑封装为一等公民。)

绑定参数


参数名称说明
allowedFields注册应允许绑定的字段模式 (白名单)
disallowedFields注册不允许绑定的字段模式(黑名单)
ignoreInvalidFields是否忽略无效字段,即是否忽略目标对象中具有不可访问的对应字段(例如由于嵌套路径中为空值)的绑定参数。默认值:false
ignoreUnknownFields是否忽略未知字段,即是否忽略目标对象中没有对应字段的绑定参数。默认值:true
autoGrowNestedPaths是否自动增加嵌套路径,默认值:true
requiredFields绑定必须字段
autoGrowCollectionLimit指定数组和集合自动增长的限制。

绑定元数据


特征说明
数据来源BeanDefinition,主要来源 XML 资源配置 BeanDefinition
数据结构由一个或多个 PropertyValue 组成
成员结构PropertyValue 包含属性名称,以及属性值(包括原始值、类型转换后的值)
常见实现MutablePropertyValues
Web 扩展实现ServletConfigPropertyValues、ServletRequestParameterPropertyValues
相关生命周期InstantiationAwareBeanPostProcessor#postProcessProperties

绑定验证


DataBinder 与 BeanWrapper(BeanWrapper通常不由应用程序代码直接使用,而是由DataBinder和BeanFactory使用。)

  • bind 方法生成 BeanPropertyBindingResult
  • BeanPropertyBindingResult 关联 BeanWrapper
    在这里插入图片描述
  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的评价就是我✍️创作的动力!					  💞💞💞

参考:
Spring 文档 -数据绑定
Spring - 数据绑定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bug小能手系列(python)_9: 使用sklearn库报错 module ‘numpy‘ has no attribute ‘int‘

AttributeError: module numpy has no attribute int. 0. 错误介绍1. 环境介绍2. 问题分析3. 解决方法3.1 调用解决3.2 库包中存在报错 4. 总结 首先,对于自己使用代码dtypenp.int报错的情况,建议直接修改为np.int_即可解决,也不用向下看了&a…

Python3安装教程在Unix/Linux操作系统

在Linux操作系统上安装Python3教程,先下载Python3安装包: Python3下载:https://www.python.org/downloads/source/ 选择适用于 Unix/Linux 的源码压缩包。下载及解压压缩包 Python-3.x.x.tgz,3.x.x 为你下载的对应版本号。如果你…

triton客户端使用

model_analyzer 简介: Triton Model Analyzer is a CLI tool which can help you find a more optimal configuration, on a given piece of hardware, for single, multiple, ensemble, or BLS models running on a Triton Inference Server. Model Analyzer wil…

SSM框架训练 实现各个功能时遇到的常见问题

快速复制当前代码到下一行:ctrlD 格式化代码(快速整理代码):ctrilaltL 一步一步来,后续会不停添加功能。 先创建项目结构:搭建框架 (36条消息) SSM框架模板(高配:一次性配完所有…

指针进阶1

目录 本章将学习 1字符指针 2数组指针与指针数组 3数组传参与指针传参 复习指针初阶基本知识点 1指针是个地址(编号),指针变量是存放指针的变量,但是我们平常所说的指针就是指的指针变量,指针变量的大小有4(32位平…

解决Quixel Bridge导出到Blender3.1失败port 28888

文章目录 前言一、错误情景二、解决办法总结 前言 解决Quixel Bridge导出到Blender3.1报错无法经由端口28888导出. 一、错误情景 导出插件显示已安装完成: 但是点击右下角导出报错无法从端口28888执行该操作. 我尝试过把MSPlugin插件手动安装到Blender3.1但这并不奏效. 二、解…

聚观早报|Threads上线7小时注册破千万;兰博基将终结燃油车生产

今日要闻:Threads上线7小时注册破千万;兰博基尼宣布将终结燃油车生产;腾讯旗下企鹅FM9月6日正式停止运营;ChatGPT暂停接入必应搜索功能;首个国产GLP-1“减肥药”获批 Threads上线7小时注册破千万 7 月 6 日消息&#…

Windows 基本概念和术语

Windows 基本概念和术语 Windows APIWindows API 的风格Windows 运行时.NET Framework 服务、函数和例程进程使用任务管理器查看进程信息父进程 线程纤程用户模式调度线程 作业虚拟内存内核模式和用户模式虚拟机监控程序固件终端服务和多会话对象和句柄安全性注册表Unicode总结…

google软件测试之道

目录 前言: 一、Google软件测试介绍 1)质量不等于测试 2)角色、职责 3)组织结构 4)测试版本 5)测试类型: 二、软件测试开发工程师,SET 1)SET的工作 2&#xff…

JVM 三色标记算法

我们要进行垃圾回收,就需要弄明白哪些对象是需要回收的,哪些对象是不需要回收的。针对这个问题,其实业界已经有几种常见的解决方法了。 第一种是计数法 第一种是计数法,就是每个对象都有一个计数器,被引用了加一&…

4.2 x64dbg 针对PE文件的扫描

通过运用LyScript插件并配合pefile模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下pefile模块。 …

uuid-golang中的使用---借鉴使用官网的办法--推荐

写在最前面的话,golang因为是国外开发的,官网,github都是网速卡或者不能使用的,这个时候可以使用国内的,搜索软件包或者下载 https://gitee.com/ 如果可以使用的话,建议从下面两个网站使用, …

Petronas 使用 SAP EWM 的 Liquid UI 离线将运营效率提高了 70%

背景 Petroliam Nasional Berhad(也称为“Petronas”)总部位于马来西亚,是一家充满活力的国际能源公司,业务遍及100多个国家,在各种石油相关活动方面拥有30多年的经验。马来西亚国家石油公司生产在道德和可持续方面推…

数据结构【树】

数据结构与算法之树结构 树的定义树的基本术语树结构和线性结构的比较树的应用 树的定义 树是一种非线性的数据结构,它是一个包含n(n>1)个节点,(n-1)条边的有穷集合。树有多种表现形式,把它叫做“树”是因为它看起来像一个倒挂的树&#…

redis主从(windows版本)

1. 下载redis 1.1、Github下载地址:Releases microsoftarchive/redis GitHub 1.2、百度网盘下载地址:Redis-x64-3.2.100.zip 密码:kdfq 1.3、也可以自行从其它地方下载 2.配置redis主,设置服务,然后启动 端口…

【Vue3】学习笔记-Composition API 的优势

1.Options API 存在的问题 使用传统OptionsAPI中(配置型API),新增或者修改一个需求,就需要分别在data,methods,computed里修改 。 这张图告诉我们,我们在v2的时候功能放到配置中。它想告诉我们所有的功能都拆散了。 …

0基础学习VR全景平台篇 第58篇:高级功能-AI人像合成

功能位置示意 一、本功能将用在哪里? AI人像合成是蛙色VR商业级方案中,重要的裂变推广功能之一; 选取对应照片,通过后台生成实现个人与场景的合影留念,一键转发分享快速传播裂变。 观者者使用本功能时,将…

基于OpenCV 和深度学习实现微笑检测-附免费源码

文末提供免费的源代码下载链接 我们将使用 SMILES 数据集来训练我们的卷积神经网络。一旦我们的模型训练完毕,我们将按照与上一个教程中相同的步骤来检测图像和视频中的微笑: 我们将使用 Haar 级联来检测图像中的人脸。从图像中提取人脸区域。将面部区域传递给我们的网络进行…

Spring Boot 中的 JPA 是什么,如何使用

Spring Boot 中的 JPA 是什么,如何使用 简介 JPA (Java Persistence API) 是一种标准的 ORM (Object Relational Mapping) 规范,用于将 Java 对象映射到关系型数据库中。它提供了一种面向对象的方式来操作数据库,使得开发者可以更加方便地进…

【openGauss5.0企业版一主一备集群】—运维

【openGauss5.0企业版一主一备集群】—运维 🔻 一、openGauss5.0主从集群的维护🔰 1.1 查看单个节点状态🔰 1.2 查看集群所有节点状态🔰 1.3 集群启停🔰 1.4 switchover 主备切换🔰 1.5 模拟主库宕机&#…