BeanWapper就和它的名字一样,它负责对bean的包装和对bean进行操作,例如对bean进行设置值和获取值。BeanWapper只有一个实现类BeanWapperImpl
,我们来看下类图:
其中大部分操作都在其父类AbstractNestablePropertyAccessor
完成。BeanWapperImpl
内部有一个属性操作类BeanPropertyHandler
,它有两个方法getValue()
和setValue(final @Nullable Object value)
,最终所有的属性操作都有该操作类通过反射完成。
org.springframework.beans
遵循JavaBeans标准。JavaBeans规范具有指示对象属性的约定。下表显示了这些约定的一些示例:
Expression | Explanation |
---|---|
name | 指示与getName() 或isName() 和setName(..) 方法对应的属性名称。 |
account.name | 指示与(例如)getAccount().setName()或getAccount().getName()方法对应的属性帐户的嵌套属性名称。 |
account[2] | 指示索引属性帐户的第三个元素。索引属性可以是数组,列表或其他自然排序的集合。 |
account[COMPANYNAME] | 指示由帐户Map属性的COMPANYNAME键索引的映射条目的值。 |
这也是表单传数和url传参的规则(个人理解)。
BeanWapper
的其中一个作用就是为Spring MVC中的请求参数进行数据设置。
网友评论