Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

《Java开发手册(嵩山版)灵魂15问》 PDF 下载


分享到:
时间:2020-09-20 15:30来源:http://www.java1234.com 作者:小锋  侵权举报
《Java开发手册(嵩山版)灵魂15问》 PDF 下载
失效链接处理
《Java开发手册(嵩山版)灵魂15问》 PDF 下载

本站整理下载:
提取码:afp0 
 
 
相关截图:
 
主要内容:

在日常开发中,我们经常需要给对象进行赋值,通常会调用其 set/get 方法,有
些时候,如果我们要转换的两个对象之间属性大致相同,会考虑使用属性拷贝工具
进行。
如我们经常在代码中会对一个数据结构封装成 DO、SDO、DTO、VO 等,而
这些 Bean 中的大部分属性都是一样的,所以使用属性拷贝类工具可以帮助我们节省
大量的 set 和 get 操作。
市面上有很多类似的工具类,比较常用的有
1. Spring BeanUtils
2. Cglib BeanCopier
3. Apache BeanUtils
4. Apache PropertyUtils
5. Dozer
那么,我们到底应该选择哪种工具类更加合适呢?为什么 Java 开发手册中提到
禁止使用 Apache BeanUtils 呢?
由于篇幅优先,关于这几种工具类的用法及区别,还有到底是什么是浅拷贝和深
为什么禁止使用 Apache Beanutils 进行属性的 copy ? <  5
拷贝不在本文的讨论范围内。
本文主要聚焦于对比这几个类库的性能问题。
性能对比
No Data No BB,我们就来写代码来对比下这几种框架的性能情况。
代码示例如下:
首先定义一个 PersonDO 类:
public class PersonDO {
 private Integer id;
 private String name;
 private Integer age;
 private Date birthday;
 // 省略 setter/getter
}
再定义一个 PersonDTO 类:
public class PersonDTO {
 private String name;
 private Integer age;
 private Date birthday;
}
然后进行测试类的编写:
使用 Spring BeanUtils 进行属性拷贝:
private void mappingBySpringBeanUtils(PersonDO personDO, int times) {
 StopWatch stopwatch = new StopWatch();
 stopwatch.start();
 for (int i = 0; i < times; i++) {
 PersonDTO personDTO = new PersonDTO();
 org.springframework.beans.BeanUtils.copyProperties(personDO, personDTO);
 }
6  > 为什么禁止使用 Apache Beanutils 进行属性的 copy ?
 stopwatch.stop();
 System.out.println("mappingBySpringBeanUtils cost :" + stopwatch.
getTotalTimeMillis());
}
其中的 StopWatch 用于记录代码执行时间,方便进行对比。
使用 Cglib BeanCopier 进行属性拷贝:

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐