Spring 数据绑定组件笔记

Dcr 1年前 ⋅ 1211 阅读

标准组件

  • org.springframework.validation.DataBinder

Web组件

  • org.springframework.web.bind.WebDataBinder
  • org.springframework.web.bind.ServletRequestDataBinder
  • org.springframework.web.bind.support.WebRequestDataBinder
  • org.springframework.web.bind.support.WebExchangeDataBinder(since 5.0)

DataBinder核心属性

属性说明
target关联目标Bean
objectName目标Bean名称
bindingResult属性绑定结果
typeConverter类型转换器
conversionService类型转换服务
messageCodesResolver校验错误文案Code处理器
validators关联的Bean Validator实例集合

DataBinder绑定方法

  • bind(PropertyValues) : 将PropertyValues Key-Value内容映射到关联Bean(target)中的属性上

DataBinder 元数据 - PropertyValue

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

DataBinder 绑定控制参数

参数名称说明
ignoreUnknownFields是否忽略未知字段,默认值:true
ignoreInvalidFields是否忽略非法字段,默认值:false
autoGrowNestedPaths是否自动增加嵌套路径,默认值:true
allowedFields绑定字段白名单
disallowedFields绑定字段黑名单
requiredFields必须绑定字段

Spring 底层Java Beans替换实现

  • JavaBeans核心实现-java.beans.BeanInfo ** 属性 ** 方法 ** 事件 ** 表达式
  • Spring替代实现-org.springframework.beans.BeanWrapper ** 属性 ** 嵌套属性路径

BeanWrapper

  • spring底层JavaBeans基础设施的中心化接口
  • 通常不会直接使用,间接用于BeanFactory和DataBinder
  • 提供标准JavaBeans分析和操作,能够单独或批量存储JavaBean的属性
  • 支持嵌套属性路径
  • 实现类org.springframework.beans.BeanWrapperImpl

全部评论: 0

    我有话说: