第十四章:Spring 数据绑定
1. Spring 数据绑定使用场景
• Spring BeanDefinition 到 Bean 实例创建
• Spring 数据绑定(DataBinder)
• Spring Web 参数绑定(WebDataBinder)
2. Spring 数据绑定组件
• 标准组件
• 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 绑定方法
• bind(PropertyValues):将 PropertyValues Key-Value 内容映射到关联 Bean(target)中的属性上
• 假设 PropertyValues 中包含“name = 小马哥”的键值对,同时 Bean 对象 User 中存在 name
属性,当 bind 方法执行时,User 对象中的 name 属性值将被绑定为“小马哥”。
3. Spring 数据绑定元数据
4. Spring 数据绑定控制参数
• DataBinder 绑定特殊场景分析
• 当 PropertyValues 中包含名称 x 的 PropertyValue,目标对象 B 不存在 x 属性,当 bind 方法执行时,
会发生什么?
• 当 PropertyValues 中包含名称 x 的 PropertyValue,目标对象 B 中存在 x 属性,当 bind 方法执行时,
如何避免 B 属性 x 不被绑定?
• 当 PropertyValues 中包含名称 x.y 的 PropertyValue,目标对象 B 中存在 x 属性(嵌套 y 属性),当
bind 方法执行时,会发生什么?
5. Spring 底层 Java Beans 替换实现
6. BeanWrapper 的使用场景
• BeanWrapper
• Spring 底层 JavaBeans 基础设施的中心化接口
• 通常不会直接使用,间接用于 BeanFactory 和 DataBinder
• 提供标准 JavaBeans 分析和操作,能够单独或批量存储 Java Bean 的属性(properties)
• 支持嵌套属性路径(nested path)
• 实现类 org.springframework.beans.BeanWrapperImpl
7. 课外资料
8. DataBinder 数据校验
• DataBinder 与 BeanWrapper
• bind 方法生成 BeanPropertyBindingResult
• BeanPropertyBindingResult 关联 BeanWrapper
9. 面试题精选
1、Spring 数据绑定 API 是什么?
答:org.springframework.validation.DataBinder
2、BeanWrapper 与 JavaBeans 之间关系是?
答: • Spring 底层 JavaBeans 基础设施的中心化接口