java对象拷贝——PropertyUtils.copyProperties()用法和性能
2017-04-20 14:42
706 查看
BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。
例一
例二(对删除的数据进行备份)
没有PropertyUtils.copyProperties,我们只能
…………………….
如果有是十个属性,我们不是累呆了。
该方法做对象的拷贝很方便,但是它的性能问题相当差
看下面的测试代码:
用了拷贝方法时
最后输出:
两种方法时间差那么多!
maven依赖
使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。
例一
Book srcBook = new Book(); srcBook.setName("Java"); Book destBook = new Book(); PropertyUtils.copyProperties(destBook, srcBook); System.out.println(destBook.getName());
例二(对删除的数据进行备份)
Student s = new Student(); s.setName("xy") ................ StudentBak sbak = new StudentBak(); PropertyUtils.copyProperties(sbak , s); StudentBakDao.save(sbak); StudentDao.delete(s);
没有PropertyUtils.copyProperties,我们只能
StudentBak sbak = new StudentBak(); sbak.setName(s.getName);
…………………….
如果有是十个属性,我们不是累呆了。
该方法做对象的拷贝很方便,但是它的性能问题相当差
看下面的测试代码:
public class A { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
用了拷贝方法时
import org.apache.commons.beanutils.PropertyUtils; public class PropertyUtilsTest { public static void main(String[] args) { // 普通的copy,每个字段拷贝 A a1 = new A(); a1.setName("wang"); A a2 = new A(); long b = new java.util.Date().getTime(); a2.setName(a1.getName()); long e = new java.util.Date().getTime(); System.out.println("原始方法耗时"); System.out.println("time1=" + (e - b)); try { // PropertyUtils.copyProperties方法copy A a3 = new A(); b = new java.util.Date().getTime(); PropertyUtils.copyProperties(a3, a1); e = new java.util.Date().getTime(); System.out.println("copyProperties方法耗时"); System.out.println("time2=" + (e - b)); } catch (Exception e1) { e1.printStackTrace(); } } }
最后输出:
time1=0 time2=265
两种方法时间差那么多!
maven依赖
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version> </dependency>
相关文章推荐
- java对象拷贝——PropertyUtils.copyProperties()用法和性能
- java对象拷贝——PropertyUtils.copyProperties()用法和性能
- java对象拷贝之BeanUtils.copyProperties() 用法
- java对象拷贝之BeanUtils.copyProperties() 用法
- java对象拷贝之BeanUtils.copyProperties() 用法
- java对象拷贝之BeanUtils.copyProperties() 用法
- PropertyUtils.copyProperties()用法和性能
- PropertyUtils.copyProperties()用法和性能
- PropertyUtils.copyProperties()用法和性能
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别[转载]
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别(转)
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别(转)
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- PropertyUtils.copyProperties的性能