【Spring 丨数据绑定】

03-07 1297阅读

数据绑定

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

      概述


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

      【Spring 丨数据绑定】

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

      【Spring 丨数据绑定】

      但DataBinder是 在org.springframework.validation 内的,因此它也支持验证功能。

      Databinder


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

      【Spring 丨数据绑定】

      核心属性


      属性说明
      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 文档 -数据绑定

        Spring - 数据绑定

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]