Cglib工具-CglibUtil

介绍

CGLib (Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库,通过此库可以完成动态代理、Bean拷贝等操作。

Hutool在5.4.1之后加入对Cglib的封装——CglibUtil,用于解决Bean拷贝的性能问题。

使用

引入Cglib

  1. <dependency>
  2. <groupId>cglib</groupId>
  3. <artifactId>cglib</artifactId>
  4. <version>${cglib.version}</version>
  5. <scope>compile</scope>
  6. </dependency>

使用

  1. Bean拷贝

首先我们定义两个Bean:

  1. @Data
  2. public class SampleBean {
  3. private String value;
  4. }
  5. @Data
  6. public class OtherSampleBean {
  7. private String value;
  8. }

@Data是Lombok的注解,请自行补充get和set方法,或者引入Lombok依赖

  1. SampleBean bean = new SampleBean();
  2. bean.setValue("Hello world");
  3. OtherSampleBean otherBean = new OtherSampleBean();
  4. CglibUtil.copy(bean, otherBean);
  5. // 值为"Hello world"
  6. otherBean.getValue();

当然,目标对象也可以省略,你可以传入一个class,让Hutool自动帮你实例化它:

  1. OtherSampleBean otherBean2 = CglibUtil.copy(bean, OtherSampleBean.class);
  2. // 值为"Hello world"
  3. otherBean.getValue();

关于性能

Cglib的性能是目前公认最好的,其时间主要耗费在BeanCopier创建上,因此,Hutool根据传入Class不同,缓存了BeanCopier对象,使性能达到最好。