志不强者智不达。——《墨子·修身》
今天使用org.springframework.cglib.beans.BeanCopier时遇到一个坑
这里记录一下
BeanCopier用于拷贝属性,详情可以看mofan的博客,写的很详细了
我们这里写两个对象用于测试
| @Data@Builder
 @EqualsAndHashCode
 @NoArgsConstructor
 @AllArgsConstructor
 public static class Monkey {
 private String name;
 private Integer age;
 }
 
 @Data
 @Builder
 @EqualsAndHashCode
 @NoArgsConstructor
 @AllArgsConstructor
 public static class Cat {
 private String name;
 private Integer age;
 }
 
 | 
我们测试一下
| public static void main(String[] args) {BeanCopier beanCopier = BeanCopier.create(Monkey.class, Cat.class, false);
 Monkey monkey = Monkey.builder().name("ruben").age(12).build();
 Cat cat = Cat.builder().build();
 beanCopier.copy(monkey, cat, null);
 System.out.println(cat);
 }
 
 | 
可以看到输出结果,我们成功把Monkey对象里的值拷贝到Cat中去了

但如果我们在Cat加入了链式
| @Data@Builder
 @EqualsAndHashCode
 @NoArgsConstructor
 @AllArgsConstructor
 @Accessors(chain = true)
 public static class Cat {
 private String name;
 private Integer age;
 }
 
 | 
我们再次运行

可以看到我们的Monkey对象里的值没有拷贝到Cat里去
所以这个坑就是
BeanCopier拷贝属性,不支持链式编程!!!