首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bean复制的几种框架性能比较(BeanUtils、PropertyUtils、BeanCopier)

比较的是四种复制的方式,分别为Apache的BeanUtils和PropertyUtils,Spring的BeanUtils,Cglib的BeanCopier。...IMethodCallBack() { @Override public String getMethodName() { return "PropertyUtils.copyProperties...FromBean frombean) throws Exception { ToBean toBean = new ToBean(); PropertyUtils.copyProperties...从整体的表现来看,Cglib的BeanCopier的性能是最好的无论是数量较大的1万次的测试,还是数量较少10次,几乎都是趋近与零损耗,Spring是在次数增多的情况下,性能较好,在数据较少的时候,性能比PropertyUtils...PropertyUtils的性能相对稳定,表现是呈现线性增长的趋势。而Apache的BeanUtil的性能最差,无论是单次Copy还是大数量的多次Copy性能都不是很好。

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Java安全之CommonsBeanUtils链

PropertyUtils.getProperty import org.apache.commons.beanutils.PropertyUtils; import java.lang.reflect.InvocationTargetException...(new People(),"name")); } } 这样就能调用到创建的对象的对应 name 属性的 getter 方法,除此之外,PropertyUtils.getProperty 还支持递归获取属性...,比如a对象中有属性b,b对象中有属性c,我们可以通过 PropertyUtils.getProperty(a, "b.c"); 的方式进行递归获取 利用链剖析 首先我们知道这个方法可以调用对象的 getter...方法调用这个getter方法,但怎么从反序列化的readObject()方法调用到PropertyUtils.getProperty这个静态方法呢,继续找哪里会调用这个方法,可以发现熟悉的compare...(o1, this.property); // <-- 此处调用 Object value2 = PropertyUtils.getProperty(o2, this.property

26870

BeanUtils.copyProperties的用法「建议收藏」

PropertyUtils.copyProperties("要转换的类", "转换后的类"); 用法其实很简单,第一个参数是要转换的类,第二个参数是转换后的类。...BeanUtils.copyProperties VS PropertyUtils.copyProperties 两者最大的区别是: BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties...既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProperties。...因此,PropertyUtils.copyProperties应用的范围稍为窄一点,它只对名字和类型都一样的属性进行copy,如果名字一样但类型不一样,它会报错。...对于需求1,可以这样: import org.apache.commons.beanutils.BeanUtilsBean; import org.apache.commons.beanutils.PropertyUtils

1.1K20

CommonsBeanUtils 反序列化

return name; } public void setName(String name) { this.name = name; } } 然后我们执行 PropertyUtils.getProperty...中存在如下方法TemplatesImpl#getOutputProperties() 我们可以发现它调用了newTransformer并且是一个getter方法,所以我们可以想办法用BeanUtils的PropertyUtils...org.apache.commons.beanutils.BeanComparator,它继承自java.util.Comparator接口,所以实现了compare方法: 如果传入两个对象时 this.property不为空,就会分别对两个对象调用PropertyUtils.getProperty...java.util.PriorityQueue,在java.util.PriorityQueue反序列化时自动调用BeanComparator#compare,这个时候想办法将传入该方法的对象改成恶意TemplatesImpl,使PropertyUtils.getProperty...PriorityQueue#siftDownUsingComparator() BeanComparator#compare() PropertyUtils

57410

Java常用的几种属性拷贝工具类使用总结

属性拷贝工具类使用总结 字段和属性 使用说明 **org.springframework.beans.BeanUtils#copyProperties** org.apache.commons.beanutils.PropertyUtils...copyProperties_ org.apache.commons.beanutils.BeanUtils#_copyProperties Spring#BeanUtils apache.commons#PropertyUtils...属性拷贝工具类使用总结 对项目中经常使用的属性拷贝工具类进行总结: org.apache.commons.beanutils.BeanUtils org.apache.commons.beanutils.PropertyUtils...,Spring BeanUtils,Cglib BeanCopier) 摘要总结:Spring是在次数增多的情况下,性能较好,在数据较少的时候,性能比PropertyUtils的性能差一些。...PropertyUtils的性能相对稳定,表现是呈现线性增长的趋势。而Apache的BeanUtil的性能最差,无论是单次Copy还是大数量的多次Copy性能都不是很好。

78240

CommonsBeanutils与无commons-collections的Shiro反序列化利用

commons-beanutils中提供了一个静态方法PropertyUtils.getProperty,让使用者可以直接调用任意JavaBean的getter方法,比如: PropertyUtils.getProperty...除此之外,PropertyUtils.getProperty还支持递归获取属性,比如a对象中有属性b,b对象中有属性c,我们可以通过PropertyUtils.getProperty(a, "b.c")...( o1, property ); final Object value2 = PropertyUtils.getProperty( o2, property ); return...上一节我们说了,PropertyUtils.getProperty这个方法会自动去调用一个JavaBean的getter方法,这个点是任意代码执行的关键。...所以,PropertyUtils.getProperty( o1, property )这段代码,当o1是一个TemplatesImpl对象,而property的值为outputProperties时,

1.4K20

为什么大厂都不推荐使用BeanUtils?

org.apache.commons.beanutils.BeanUtils; org.apache.commons.beanutils.PropertyUtils; org.springframework.cglib.beans.BeanCopier...} } "四大金刚" 性能统计 方法 1000 10000 100000 1000000 apache BeanUtils 906毫秒 807毫秒 1892毫秒 11049毫秒 apache PropertyUtils...性能走势 --> spring cglib BeanCopier 优于 spring copyProperties 优于 apache PropertyUtils 优于 apache BeanUtils...Apache PropertyUtils 源码分析 从源码可以清晰的看到,类型检查变成了非空校验,去掉了每一次copy的日志记录,性能肯定更好了。...Apache Beanutils 的性能问题出现在类型校验和每一次copy的日志记录; Apache PropertyUtils 进行了如下优化: 类型检查变成了非空校验 去掉了每一次copy的日志记录

40020

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券