对象拷贝类BeanUtils,BeanCopier

在编写程序中,有时候要把A.class和B.class两个类相同属性的数据复制赋值,有些人会用BeanUtil.copyFormToBean(Object

from,Object to); 其中from是类A的一个对象,to是类B的一个对象。但在性能测试时,发现CPU占用率很高,其实大部分就是被

BeanUtils占用了。原因是BeanUtils是通过效率相对低的反射机制进行属性值的拷贝。

而cglib中工具类BeanCopier可以减少cpu占用率。

private static BeanCopier copy = BeanCopier.create(A.class, B.class, false);
A from = new A();
B to = new B();
copy.copy(from, to, null);

这样就可以实现跟copyFromToBean()同样的效果。 

性能上优于BeanUtils的原因就在于,前者在字节码级别生成了前文所述的setter和getter拷贝属性值的指令代

码,本人测试过使用BeanUtil所花费的时间比BeanCopier多4-5秒。

具体的BeanCopier类的方法,大家可以自行百度。

 

 

 

你可能感兴趣的:(对象拷贝类BeanUtils,BeanCopier)