spring 源码研究---bean包--BeanWapper TypeCoverter PropertyEditorRegistrySupport BeanInfo PropertyValue


#####################   PropertyValue  ############################
AttributeAccessor定义了访问属性访问器
AttributeAccessorSupport使用hash表来管理属性访问器
BeanMetadataElement接口携带了包含bean元数据元素的source对象
BeanMetadataAttribute类持有bean对象中一个key/value属性,跟踪source对象
BeanMetadataAttributeAccessor继承了AttributeAccessorSupport类,实现了BeanMetadataElement接口,
它不仅拥有属性访问器,它把属性值设置为BeanMetadataAttribute类型,把key设置为BeanMetadataAttribute的key,它还可以跟踪source对象
PropertyValue继承自BeanMetadataAttributeAccessor
保存bean对象中的信息及值,使用一个对象,而不是让所有属性保存在Map对象中,它允许了更大的灵活性,并且能都处理索引属性来优化
它可以是简单的包含属性,不需要进行解析后放入        
PropertyValues接口持有一个或多个PropertyValue对象,通常更新指定的bean。
MutablePropertyValues实现了PropertyValues接口。
把所有PropertyValue放入了List集合中,可以当作集合来管理PropertyValue对象,
它提供了构造器可以对来自List Map PropertyValues等持有PropertyValue对象的集合中进行深度拷贝。

/**
 *################################ BeanWrapper#############################
 * PropertyAccessor接口定义了class类中字段的访问和设置功能
 * 判断该字段是否支持读 写
 * 通过字段名取得对应的类型
 * 通过字段名得到对应的对象
 * 通过字段名得到类型描述TypeDescipter
 * 通过name,vaule或Map或PropertyValue或PropertyValues来设置字段值
 * 在设置PropertyValues集合属性时,可以设置是否忽略不需要的元素或无法验证的元素
 *
 * ConfigurablePropertyAccessor接口继承了PropertyAccessor接口 PropertyEditorRegistry接口 和TypeConverter接口
 * 它就包含属性访问器、编辑器管理、及类型转换功能
 * 它自己设置配置转换器服务ConversionService
 * 设置了是否需要提取编辑器设置的旧值
 * AbstractPropertyAccessor抽象类实现了TypeConverterSupport和ConfigurablePropertyAccessor
 * 定义了访问器的set get 主要结构,主要的实现有子类完成,这是典型的模板方法。
 *
 * 定义bean对象,
 * 定义bean对象的.之前的根路径对象,如果对象是集合,定义每个元素在集合中的路径
 * 定义了缓存当前访问器的map key nestedPath value是该类下的下一个访问器
 * 构造器
 * 1.是否使用默认的编辑器
 * 2.默认构造函数为使用默认的编辑器
 * 3.给定对象或类型
 * 构造器根据设定的值构造该对象
 * 可以访问该对象实例
 * 可以访问该对象类型
 * 可以访问该对象在元素集合中的位置属性
 * 可以访问该对象访问器的根对象 .最前面的对像及根对象类型
 *
 *
 * 设置值 String propertyName, Object value
 * 1:通过属性名

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值