概述
常见或常用的几种Bean属性复制工具
- Apache.BeanUtils
- Apache.PropertyUtil
- Spring.BeanUtils
- Cglib.BeanCopier
- MapStruct
- EZMorph
使用场景:Dto与Entity转换
- 普通属性复制
- 个别属性过滤
- 属性类型转换
- 数组或集合拷贝
性能对比
测试在两个简单的Bean之间转换的耗时,执行次数分别为10、100、1k、10k、100k,时间单位为ms。
源码分析
Apache.BeanUtils
org.apache.commons.beanutils
- 通过内省(Introspector)获取源类型的属性信息
- 判断源类型的属性是否可读及目标类型的属性是否可写
- 可读
- 有getter方法
- 可写
- 有setter方法
- 可读
- 进行复制
- 获取属性名
- 获取属性类型
- 进行属性值转类型[自带类型转换器,提供注册自定义转换器接口]
- 赋值