copier与iphotoo copier有什么区别

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

目前项目中使用的的几种BeanCope的框架:

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

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

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

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

BeanCopier从名字可以看出了是一个快捷嘚bean类复制工具类。

如何使用我就直接丢代码了

// 属性名称、类型都相同,成功复制 // 属性名称相同,类型不同类型不同的不能复制 // 属性名称楿同,类型不同的解决方法,使用convert注意要写上类型相同的情况 // 目标无setter,不能复制注意此处,网上说会报错但是新版本并无此报错 // 源无setter,都不能赋值了好吧
// 创建过的BeanCopier实例放到缓存中,下次可以直接获取提升性能

对于字段名称与类型完全一样时两者无区别。

特别注意BeanUtils: 第一个字母不需要大小写之外其他的部分是需要严格区分大小写的 


参考资料

 

随机推荐