Bean映射
Spring BeanUtil
org.springframework.beans.BeanUtils#copyProperties
基于反射做的,性能不高,使用场景不频繁对性能没有要求的可以借用下
Cglib BeanCopier
net.sf.cglib.beans.BeanCopier#copy
基于ASM进行字节码操作,编译时生成代理类,运行时直接执行class文件,性能较好
缺点:
- 不支持自定义对象的深拷贝
- 两个对象的属性字段类型、命名、getter|setter方法要保持一致,否则会拷贝失败
- BigDecimal的拷贝有精度问题
Spring BeanCopier
org.springframework.cglib.beans.BeanCopier#copy
基于cglib的实现的,其实就是引入了cglib源码做了一些封装,cglib源码痕迹非常清晰,性能参考cglib的BeanCopier
Orika
http://orika-mapper.github.io/orika-docs/index.html