BeanCopier性能对比

本文对比分析了Bean转换工具的性能,包括Apache BeanUtils, PropertyUtils, Spring BeanUtils, Cglib BeanCopier, MapStruct和EZMorph。在性能测试中,观察了不同工具在不同数量对象转换时的耗时。源码分析部分揭示了各工具的工作原理,如BeanUtils依赖内省和类型转换,Cglib BeanCopier使用动态代理生成字节码,而MapStruct支持XML和注解配置。在功能维度上,MapStruct适合复杂转换,Cglib BeanCopier适合简单转换。最后,建议根据性能需求选择合适工具或手动编写getter/setter。" 121493475,9803657,C语言中的数组与指针效率对比,"['C', 'C++', '编程基础']
摘要由CSDN通过智能技术生成

概述

常见或常用的几种Bean属性复制工具

  • Apache.BeanUtils
  • Apache.PropertyUtil
  • Spring.BeanUtils
  • Cglib.BeanCopier
  • MapStruct
  • EZMorph

使用场景:Dto与Entity转换

  • 普通属性复制
  • 个别属性过滤
  • 属性类型转换
  • 数组或集合拷贝

性能对比

测试在两个简单的Bean之间转换的耗时,执行次数分别为10、100、1k、10k、100k,时间单位为ms。
BeanCopier性能对比


源码分析

Apache.BeanUtils

org.apache.commons.beanutils

  1. 通过内省(Introspector)获取源类型的属性信息
  2. 判断源类型的属性是否可读及目标类型的属性是否可写
    • 可读
      • 有getter方法
    • 可写
      • 有setter方法
  3. 进行复制
    1. 获取属性名
    2. 获取属性类型
    3. 进行属性值转类型[自带类型转换器,提供注册自定义转换器接口]
    4. 赋值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值