前言
数据绑定 这个概念在任何一个成型的框架中都是特别重要的(尤其是web框架),它能让框架更多的自动化,更好容错性以及更高的编码效率。它提供的能力是:把字符串形式的参数转换成服务端真正需要的类型的转换(当然可能还包含校验)。
对Spring中的数据绑定场景,小伙伴们就再熟悉不过了。比如我们Controller中只需要使用Model对象就能完成request到Model对象的自动数据自动绑定,使用起来着实非常方便~(完全屏蔽了Servlet的API)
![e4eecfca6fa7181154102d0ffbbea793.png](https://i-blog.csdnimg.cn/blog_migrate/d8e47ce6de1bfbff805682b37d0e5b43.jpeg)
既然数据绑定这么重要,但是为何鲜有人提起呢?我也上网搜了搜关于DataBinder的相关资料,相对来说还是寥寥无几的~
我们不提起并不代表它不重要,这些都是Spring它帮我们默默的干了。这也印证了那句名言嘛:我们的安好是因为有人替我们负重前行
查到网上的资料,大都停留在如何使用WebDataBinder的说明上,并且几乎没有文章是专门分析核心部件DataBinder的,本文作为此方面的一股清流,在此把我结合官方文档、源码的所获分享给大家~
DataBinder
注意,此类所在的包是org.springframework.validation,所以可想而知,它不仅仅完成数据的绑定,还会和数据校验有关~
注意:我看到有的文章说DataBinder在绑定的时候还会进行数据校验Validation,其实这个是不准确的,容易误导人(校验动作不发生在DataBinder本类)
还有说DataBinder数据绑定最终依赖的是BeanWrapper,其实这个也是不准确的,实际上依赖的是PropertyAccessor。
DataBinder使用Demo
先看一个简单Demo,体验一把直接使用DataBinder进行数据绑定吧:
public static void main(String[] args) throws BindException { Person person = new Person(); DataBinder binder = new DataBinder(person, "person"); MutablePropertyValues pvs = new MutablePropertyValues(); pvs.add("name