旧爱(BeanUtils.copyProperties)
What & HOW
Why
- 无脑丝滑操作
Why Not
- 无脑,复制存在不确定性
- 局限性(Java Can’t to PB )
- 性能差(其实无所谓啦,ToB业务 再差能差多少)
principle
新欢(MapStruct)
What & HOW
https://mapstruct.org/
Why Not
- 稍微要配置那么一下下,写一个Interface
Why
- 赋值严谨
- 适配高,可用@Mapping注释去做不同类型的映射
- 适用Build,Get 等
- 性能强一点,copy快一点
principle
- 生成 imp 类型实现Mapper接口
- 映射对应参数进行 get / set; build 复制操作
WARN
两者性能比较
图
自测对比图

其他对比图

- 原理上来讲,getter/ Setter 方式与MappStruct 耗时应该一样;MapStruct 每次生成新对象,判空会稍微耗时一些

本文对比了Java中BeanUtils.copyProperties和MapStruct两个库在对象复制中的使用。BeanUtils提供简便操作,但可能存在不确定性及性能问题。MapStruct则通过配置实现更严谨的赋值,并具有更好的性能和广泛的适配性。尽管MapStruct需要额外配置,但其优势在于灵活性和效率,尤其在大型项目中更为显著。文章还探讨了解决MapStruct与Lombok冲突的方法,并提供了两者性能测试的对比结果。
208





