引言
org.springframework.beans.BeanWrapper是Spring框架中重要的组件类。BeanWrapper相当于一个代理器,Spring委托BeanWrapperwancehngBean属性的填充工作。在Bean实例被InstantiatioonStrategy创建出来之后,容器主控程序将Bean实例通过BeanWrapper包装起来,这是通过调用BeanWrapper#setWrappedInstance(Object obj)方法完成的。
继承体系
BeanWrapper还有两个顶级类接口,分别是PropertyAccessor和propertyeditorRegistry。PropertyAccessor接口定义了各种访问Bean属性的方法,如setPropertyValue(String,Object)、setPropertyValues(PropertyValues pvs)等;而propertyeditorRegistry是属性编辑器的注册表。所以BeanWrapper实现类BeanWrapperImpl具有三重身份:
小结
要顺利地填充Bean属性,除了目标Bean实例和属性编辑器外,还需要获取Bean对应的BeanDeFinition,它从spring容器的BeanDeFinitionRegistry中直接获取。Spring主控程序从BeanDeFinition中获取Bean属性的配置信息PropertyValue,并使用属性编辑器对PropertyValue进行转换以得到Bean的属性值。对Bean的其他属性重复这样的步骤,就可以完成Bean所有属性的注入工作。BeanWrapperImpl在内部使用Spring的BeanUtils工具类对Bean进行反射操作,设置属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。