avatar

nk

学习 思考 坚持 平静

  • 首页
  • 关于
Home Spring 数据绑定
文章

Spring 数据绑定

Posted 2024-01-25 Updated 2024-01- 25
By nk
189~244 min read

Spring 数据绑定

Spring 数据绑定有那些使用场景

  • Spring BeanDefinition 创建 Bean 实例

  • Spring 的数据绑定(org.springframework.validation.DataBinder)

  • Spring Web 参数绑定 (org.springframewok.web.bind.WebDataBinder)

Spring 数据绑定的组件

标准组件

  • org.springframework.validation.DataBinder

Web 组件

  • org.springframework.web.bind.WebDataBinder

  • org.springframework.web.bind.ServletRequestDataBinder

  • org.springframework.web.bind.WebReqeustDataBinder

  • org.springframework.web.bind.WebExchangeDataBinder(Sine 5.0)

org.springframework.validation.DataBinder

核心属性

属性

说明

target

管理目标 Bean

objectName

目标 Bean 名称

bindResult

属性绑定结果

typeConverter

类型转换

conversionService

类型转化服务

messageCodeResolver

校验错误文案处理器

validators

关联的 Bean Validator 实例集合

核心方法

image-20240124231225475

元数据:org.springframework.beans.PropertyValues

来源

特征

说明

数据来源

BeanDefinition,主要来源于 XML 资源配置

数据结构

一个或多个org.springframework.beans.PropertyVlaue

成员结构

Property包括属性名称,属性值(包括原始值和转化后的值)

常见实现

org.springframework.beans.MultablePropertyVlaues

Web 拓展实现

org.springframework.web.servlet.HttpServletBean.ServletConfigPropertyValues org.springframework.web.bind.ServletRequestParameterPropertyVluaes

相关生命周期

org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor#postProcessProperties

org.springframework.validation.DataBinder 控制参数

参数名称

说明

ignoreUnkonwFields

是否忽略未知字段: image-20240124233506581

ignoreInvalidaFields

是否忽略非法字段: image-20240124233553271

autoGrowNestedPaths

是否自动绑定嵌套路径 : image-20240124233636998

allowedFields

绑定字段白名单: image-20240124233721698

disalloweFields

绑定字段白名单; image-20240124233804767

requiredFields

必须绑定的字段: image-20240124233836790

Spring 底层替换Java Beans 实现

JavaBeans

  • 属性(Property)

    • java.beans.PropertyEditor

  • 方法(Method)

  • 事件(Event)

  • 表达式(Expression)

Spring 的替代实现org.springframework.beans.BeanWapper

  • 属性(Property)

    • java.beans.PropertyEditor

  • 嵌套属性路径(Nested Path)

org.springframework.beans.BeanWrapper

  • Spring底层 JavaBeans 基础设施的中心化接口

  • 通常不会经常使用,简介用于org.springframework.beans.factory.BeanFactory和org.springframework.validation.DataBinder

  • 提供标准的JavaBeans分析和操作,能够单独或者批量存储JavaBeans的属性(properties)

  • 支持嵌套属性路径(Nested Path)

  • 实现类是:org.springframework.beans.BeanWrapperImpl

标准的JavaBeans是如何操作属性的

API

说明

java.beans.Introspector

Java Beans 内省 API

java.beans.BeanInfo

java Beans 元信息 API

java.beans.BeanDescriptor

Java Beans 信息描述符

java.beans.PropertyDescriptor

Java Beans 属性描述符

java.beans.MethodDescriptor

Java Beans 方描述符

java.beans.EventSetDescriptor

Java Beans 事件集合

org.springframewrok.validation.DataBinder 和org.springframewok.beans.BeanWrapper

  • bind 方法生成 org.springframework.validation.BeanPropertyBindingReuslt

    • org.springframework.validation.BeanPropertyBingdingReuslt 关联org.springframework.beans.BeanWrapper

面试题: Spring 数据绑定的API是什么

org.springframework.validation.DataBinder

面试题: org.springframework.beans.BeanWrapper和 JavaBeans之间的关系

org.springframework.beans.BeanWrapper 是 Spring 底层 JavaBeans 基础设施中心接口

Spring Framework
Spring
License:  CC BY 4.0
Share

Further Reading

Jan 25, 2024

Spring 数据绑定

Spring 数据绑定 Spring 数据绑定有那些使用场景 Spring BeanDefinition 创建 Bean 实例

Jan 23, 2024

Spring Framewok: Spring 校验

Spring 校验 Spring 校验的使用场景 Spring 常规校验 (Validator) Spring 数据绑定 (DataBinder) Spring Web 参数绑定 (WebDataBinder)

OLDER

Spring Framewok: Spring 校验

NEWER

小鸡的自我救赎: Alpine Linux

Recently Updated

  • 拥抱云原生:Dockerfile 的多阶段构建
  • 拥抱云原生:Dockerfile
  • 拥抱云原生:Docker文件系统
  • 拥抱云原生:Docker 指令小析
  • 拥抱云原生:起始

Trending Tags

Nginx 工作报告 云计算 云原生 Alpine Linux Docker Spring Linux 面试智慧

Contents

©2025 nk. Some rights reserved.

Using the Halo theme Chirpy