目录
以往我们做单体系统的时候,没有那么复杂的架构,出参,入参都非常简单,很多同学都会直接用map来进行组装,但是后面的系统越来越复杂,map的弊端出现了。
现在前后端分离,前端经常需要看后端有哪些接口,这就需要后端提供明确的出参及出参,这时候,就出现了非常多的对象,像VO,DTO,DO等。
对象有了,解决了领域对象的区分问题,但是也带来了两个问题
1、对象转化问题
2、对象转化的性能问题
今天我们来聊聊,现有的对象复制,哪些性能最快
对象复制有哪些方式
1、apache的BeanUtils
2、apache的PropertyUtils
3、Spring的BeanUtils
4、Spring的BeanCopier
5、采用字节码的Asm的BeanCopier
6、cglib的BeanCopier
7、最原始的setget
引入最新包体
<!-- apache对象包 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/cglib/cglib -->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.esotericsoftware/reflectasm -->
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>reflectasm</artifactId>
<version>1.11.9</version>
</dependency>
定义7个方法体
/**
* 采用apache common的BeanUtils对象复制
* @author 溪云阁
* @throws InvocationTargetException
* @throws IllegalAccessException void
*/
public static void beanCop