【Spring 丨数据绑定】
数据绑定
- 概述
- 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使用。)
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。