在日常开发工作中,会遇到各种对象转换的地方,从Entity
到DTO
,从DTO
到VO
等等,对象拷贝无疑是最常用的开发技巧。当我们处理有很多属性的对象的时候,一个称手的对象拷贝工具能够有效地提升开发效率。本文针对对象拷贝这一开发需求,研究几种对象拷贝工具,并比较它们的性能。
1 对象拷贝工具
本文研究Apache
的BeanUtils
、Spring
的BeanUtils
、Mapstruct
。
1.1 BeanUtils
Apache
和Spring
都提供了BeanUtils
工具类来处理Bean
的拷贝工作,下面看一下它们的用法。
首先引入maven
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
准备两个对象类:
@Data
public class BeanEntity {
private String field1 = "field1";
private String field2 = "field2";
private String field3 = "field3";
private String field4 = "field4";
private String field5 = "field5";
private String field6 = "field6";
private String field7 = "field7";
private String field8 = "field8";
private String field9 = "field9";
private String field10 = "field10";
private String field11 = "field11";
private String field12 = "field12";
private String field13 = "field13";
private String field14 = "field14";
private String field15 = "field15";
private String field16 = "field16";
private String field17 = "field17";
private String field18 = "field18";