标准组件
- 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