BeanCopier几种框架的比较对比,你熟悉哪种?

BeanCopier几种框架的比较对比,你熟悉哪种?

精选文章moguli202025-03-16 15:35:1222A+A-

项目中的通常都会遇到bean copy的场景,spring,oracle,Apache都有自己的开源bean copy框架,大家常常会困扰到底哪个框架的性能最好,下面对各个框架的性能测试,帮助大家在开发中使用合适自己的bean copy框架:


常用的对象属性的拷贝方式有很多,就随便说几个:

spring 的 BeanUtils.copyproperties() 原理:反射


apache的 BeanUtils.copyproperties()


String的 BeanUtils.copyproperties()


PropertyUtils.copyproperties()


BeanCopier.create()原理:cglib 利用字节码技术


但是上面几个中,我测试了spring的 BeanUtils.copyproperties() 发现的确很慢,BeanCopier.create()的最快,及什么都不用原始的setXXX重新赋值的3种情况。


测试环境:

测试工具:jmeter


线程数:10


并发时间:1秒内启动10个线程


结束时间:1分钟


第一种:原始的setXXX,主要看Average平均时间


第二种:spring的BeanUtils.copyproperties


第三种:cglib-BeanCopier.create(), 高版本的spring中已经封装了,拿来用就行了


BeanCopier.create()的使用方式:

BeanCopier copier = BeanCopier.create(AddessResolverDto.class, RespFullDcDto.class, false);

copier.copy(bullSortingDto, respFullDcDto,null);

————————————————

结论:


直接用get,set是最快的,如果实例字段比较少的情况下,建议直接使用get,set。


cglib在没有converter的情况下性能是最好的,如果有converter的话要具体看converter的实现,总体速度也是很快的,建议不需要或简单converter场景的使用。


Spring beanUtils 和orika在并发低情况下速度相当,当线程增加以及字段量增加的时候,orika性能逐渐有优势(orika对于21属性和41属性速度差不多,而spring beanUtils由于是基于反射实现,属性增加耗时也相应增加)。orika劣势在于需要初始化Factory,每个类转换都需要注册到factory,使用起来比较繁琐,orika优势在于字段量大,并发高的场景,并且orika是深拷贝可以自己定义转换字段,所以推荐在需要的情况使用。


Apache的相对比较慢,不建议使用。


推荐大家使用cglib和orika

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2